错误当创建mysql过程有SYS_REFCURSOR作为输出参数

mdfafbf1  于 2023-06-04  发布在  Mysql
关注(0)|答案(1)|浏览(420)

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

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..请检查我的代码,让我意识到我的错误。先谢了

g6ll5ycj

g6ll5ycj1#

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 ;

sample();这将返回一个结果集。你可以使用。

相关问题