如何在mysql中创建存储过程

Posted

技术标签:

【中文标题】如何在mysql中创建存储过程【英文标题】:How to create a stored procedure in 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 是否不为空吗? 【参考方案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 ;

【讨论】:

以上是关于如何在mysql中创建存储过程的主要内容,如果未能解决你的问题,请参考以下文章

mysql - 在存储过程中创建事件

在尝试在 MySQL 中创建存储过程之前,如何检查它是不是存在?

mysql在存储过程中创建触发器

如何在mysql数据库中创建一个包含请求的存储过程

在 MySql/phpmyadmin 中创建存储过程

试图在 Mysql 中创建存储过程的语法错误?