Я создал ТИПцикл внутри курсора оракула
TYPE t_array IS TABLE OF VARCHAR2(15);
Функция, которая принимает строку, которая содержит «» в качестве разделителя, и функция возвращает t_array которая в основном разделив строку и список значений возвращения ,
FUNCTION split_string(id IN VARCHAR2)
...
...
....
RETURN t_array;
END split_string;
Теперь моя хранимая процедура занимает в длинных строках в качестве входных данных, вызывает функцию, чтобы разбить строку и петли через t_array и возвращает курсор.
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 для i IN l_array.first .. l_array.last» просто неверна и выглядит как копирование пасты из разных примеров. –
http://stackoverflow.com/questions/3819375/convert-comma-separated-string-to-array-in-pl-sql – OldProgrammer