【发布时间】:2025-12-25 08:15:11
【问题描述】:
我正在尝试编写一个存储过程,它接受一个数字 n,并返回给定查询的前 n 个结果,专门锁定这 n 行。我对 SQL 有点陌生,并且在正确匹配数据类型时遇到了一些困难。
我的包装规格如下所示:
PACKAGE package IS
Type out_result_type is REF CURSOR;
PROCEDURE stored_proc
(in_n IN NUMBER DEFAULT 10,
out_list IN OUT out_result_type);
然后我在过程体中定义光标,如下所示:
CURSOR OUT_RESULT_TYPE IS
SELECT a.id
FROM schema.table a
WHERE (some conditions) AND rownum <= in_n;
稍后我尝试将光标的结果提取到输出变量中:
OPEN OUT_RESULT_TYPE;
FETCH OUT_RESULT_TYPE INTO out_list; -- error on this line
CLOSE OUT_RESULT_TYPE;
但是很遗憾,这段代码无法编译; oracle 抱怨 out_list 已使用冲突的数据类型定义。知道如何解决这个问题吗?快把我逼疯了!
提前致谢。
【问题讨论】: