1

我在为 MySQL 数据库创建存储过程时遇到了一些麻烦。

这是一个有效的 Select 语句:

use canningi_db_person_cdtest;
SELECT *
FROM pet
WHERE name = 'Puffball';

这是我的存储过程不起作用:

use canningi_db_person_cdtest;
CREATE PROCEDURE GetAllPets() 
BEGIN 
SELECT *
FROM pet
WHERE name = 'Puffball'; 
END

我收到以下错误:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 5 行的 '' 附近使用正确的语法

我怎样才能得到这个工作?

编辑

我如何调用这个存储过程?我试过这个没有结果:

use canningi_db_person_cdtest;
CALL GetAllPets();

这是错误:

#1312 - PROCEDURE canningi_db_person_cdtest.GetAllPets can't return a result set in the given context 
4

2 回答 2

1

添加分隔符以结束您的过程。例子:

use canningi_db_person_cdtest;

DELIMITER //

CREATE PROCEDURE GetAllPets() 
BEGIN 
    SELECT *
    FROM pet
    WHERE name = 'Puffball'; 
END//

如果您需要更多信息,请参阅http://dev.mysql.com/doc/refman/5.1/en/stored-programs-defining.html

于 2013-09-28T01:45:36.977 回答
0

在这种特殊情况下,由于您的过程中只有一个语句,因此您无需更改DELIMITER或使用BEGIN...END块。

您的程序可能看起来像这样

CREATE PROCEDURE GetAllPets() 
  SELECT *
    FROM pet
   WHERE name = 'Puffball'; 

并像这样使用它

CALL GetAllPets();

这是SQLFiddle演示

于 2013-09-28T02:25:49.620 回答