【问题标题】:MySQL Stored ProceduresMySQL 存储过程
【发布时间】:2011-03-31 12:16:37
【问题描述】:

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

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

此查询将“uid”作为输入并选择该 uid 的用户名, 有人可以解释我如何在 php 中调用该过程,以及如何将实际行输出到 php var?

【问题讨论】:

  • 使用什么数据库接口? mysqli? PDO?还有什么?
  • 我已经使用phpmyadmin插入了存储过程,但是我正在尝试通过php执行

标签: php mysql stored-procedures


【解决方案1】:

AFAIK 你只需要在查询中调用它:

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

【讨论】:

  • 但是我不是必须在过程中定义一个 'OUT' var 以便将选定的行添加到 php var 中吗?
【解决方案2】:

您应该考虑使用返回单个 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 //

【讨论】:

    【解决方案3】:

    您可以只使用“CALL”并像普通查询一样检索行。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 2017-04-26
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多