2010-08-18 173 views
2

我有几个关于存储过程的问题。经过数小时的搜索,我真的找不到任何非常简单的查询示例。MySQL存储过程

CREATE PROCEDURE test1(IN uid INT) 
BEGIN 
    SELECT USER_NAME FROM USERS WHERE USER_ID = uid; 
END // 

此查询时间为“uid”作为输入,并选择用户名该uid, 是否有人可以解释我是如何调用该程序在PHP和也,我怎么输出的实际行到PHP的变种?

+0

使用什么数据库接口?库MySQLi? PDO?还有别的吗? – 2010-08-18 11:46:46

+0

我已经使用phpmyadmin插入存储过程,但我试图通过php执行 – 2010-08-18 11:54:06

回答

0

您应该考虑与存储的函数,它返回一个VARCHAR这样做:

CREATE FUNCTION test1(uid INT) RETURNS VARCHAR(100) 
BEGIN 
    DECLARE V_RETURN_VAL VARCHAR(100); 

    SELECT USER_NAME 
    INTO V_RETURN_VAL 
    FROM USERS 
    WHERE USER_ID = uid; 

    RETURN V_RETURN_VAL; 
END // 
1

据我所知,你只需要把调用之前它在查询:

$result = mysql_query("CALL test1(".$args.")"); 
$username = mysql_result($result); 
+0

但是,我不必在过程中定义一个'OUT'var来获取选定的行到php var吗? – 2010-08-18 11:47:00

0

你可以只使用“CALL”并检索行,就像它是一个普通查询一样。

唯一不同的情况是如果过程返回多个结果集,在这种情况下,您必须通过一个给出下一个结果集的方法遍历它们(甚至是空的)。

OUT参数浪费时间,因为它们需要更多往返和服务器端状态来获取其结果;如果你使用它们,你总会写更多的代码并且会有更多的错误。