【问题标题】:How to create a stored procedure in mysql如何在mysql中创建存储过程
【发布时间】:2012-03-02 09:35:10
【问题描述】:

我在mysql中创建了如下存储过程...

DELIMITER //
CREATE PROCEDURE GetMember(IN in_memberID int)
BEGIN
    SELECT *
    FROM Members
    WHERE MemberID = in_memberID;
END//



$result = mysql_query("CALL GetMember(".$memberID.")") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
    echo $row['Name'] . "</br>";
}

但是当我从 php 调用它时,它会返回成员表中的所有记录,我做错了什么?

编辑: 当我尝试在 phpmyadmin 中调用查询时,出现此错误

CALL GetMember(1);

#1312 - PROCEDURE myDb.GetMember can't return a result set in the given context

【问题讨论】:

  • 也许将 IN var 更改为 in_memberId 以避免混淆?
  • 我同意@ethrbunny。我认为它使程序混乱。
  • @MelvinProtacio 我已添加到 php 中。
  • 你能从 mysql cmd 行调用它吗?它看起来很简单。
  • 你能在调用 sp 之前检查 $memberID 是否不为空吗?

标签: php mysql stored-procedures phpmyadmin


【解决方案1】:

什么版本的 PHP?

PHP 5.2.3 和 PHP 5.2.4 有一个程序错误: https://bugs.php.net/bug.php?id=42548

【讨论】:

    【解决方案2】:
    use Database_Name;
    
    DELIMETER $$
    
    DROP PROCEDURE IF EXISTS Proc$$
    CREATE PROCEDURE Proc()
           BEGIN
                   DECLARE x INT;
                   SET x = 1;
                   WHILE x <= 110000 DO
                       INSERT INTO Table_Name (word, mean) VALUES ('a', 'a mean');
                       SET x = x + 1;
                   END WHILE;
           END$$
    
    DELIMITER ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-30
      • 2016-11-11
      • 2017-10-14
      • 2021-07-10
      • 2015-08-27
      • 2017-06-19
      • 2014-09-29
      • 2012-05-28
      相关资源
      最近更新 更多