【发布时间】:2016-05-03 18:51:31
【问题描述】:
我已经创建了一个类型
TYPE t_array IS TABLE OF VARCHAR2(15);
一个函数,它接受一个包含“,”作为分隔符的字符串,该函数返回 t_array,它基本上是拆分字符串并返回值列表。
FUNCTION split_string(id IN VARCHAR2)
...
...
....
RETURN t_array;
END split_string;
现在我的存储过程将长字符串作为输入,调用函数来拆分字符串并循环遍历 t_array 并返回一个 CURSOR。
PROCEDURE p_get_xxx(p_id IN VARCHAR2,
p_cur_result OUT SYSREFCURSOR)
AS
l_array schema_name.t_array;
BEGIN
l_array := split_string(p_id);
OPEN p_cur_result FOR
FOR i IN l_array.first .. l_array.last
LOOP
SELECT * FROM ........
WHERE ID = l_array(i);
END LOOP;
END p_get_xxx;
我得到一个编译错误:
在 '(' 的位置出现意外的 'FOR'
有没有更好的方法来处理这种情况,还是我在这里遗漏了一些东西?
【问题讨论】:
-
那个 plsql 代码看起来很像书本。只是这部分“OPEN p_cur_result FOR for i IN l_array.first .. l_array.last”是错误的,看起来像是从不同示例中复制粘贴。
标签: oracle stored-procedures cursor