0

我正在创建具有两个参数的过程,一个是 SYS_REFCURSOR 类型的 p_cursor(OUT 参数),另一个是 INT(IN 参数)类型的 p_rank。但它显示一个错误。

DELIMITER $$
CREATE  PROCEDURE sp_student(p_cursor OUT SYS_REFCURSOR,p_rank IN INT) 
    BEGIN
    OPEN p_cursor FOR SELECT  * FROM student WHERE   rank = p_rank;
    END$$
DELIMITER ;

我得到的错误是,

Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUT SYS_REFCURSOR,p_rank IN INT) 
    BEGIN
    OPEN p_cursor FOR SELECT  * FROM st' at line 1

我认为 SYS_REFCURSOR 在语法上是错误的。请检查我的代码并让我意识到我的错误。提前致谢

4

1 回答 1

2

mysql 没有像 oracle 那样的 refcursor,如果你打算编写一个存储过程来返回 mysql 中的多行/结果集,那就做

DROP procedure IF EXISTS `sample`;
DELIMITER $$
CREATE  PROCEDURE `sample`(p_rank IN INT)
BEGIN
select * from MyTable where id=p_rank;
END$$
DELIMITER ;

调用样本();这将返回一个结果集。你可以使用哪个。

于 2014-04-02T14:41:21.067 回答