【发布时间】:2013-09-30 10:14:29
【问题描述】:
我正在创建具有两个参数的过程,一个是 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 在语法上是错误的。请检查我的代码,让我意识到我的错误。 提前致谢
【问题讨论】:
-
MySql 没有像 Oracle 中那样的 REFCURSOR,请看这个答案:stackoverflow.com/questions/7155790/…
-
在mysql中,如果我们想从过程中返回记录集,我们不需要维护params和sys_refcursor,而是直接在过程体中编写select语句。不是Kordiko先生吗?
-
阅读此链接:dev.mysql.com/doc/refman/5.5/en/…。该过程的结果集返回
directly to the client(MySQL、MySlqWorkbench、PHP、JDBC、ODBC 等)。但如果该过程是从另一个过程调用的,则调用过程无法读取此结果集。临时表可用于将许多行从一个过程传递到另一个过程。
标签: mysql sys-refcursor java-stored-procedures out-parameters