Переменная помогает сохранить результат запроса на выборку, но это зависит от того, дает ли запрос на выборку одну или несколько строк в качестве выходных данных.
Репликация запроса, как показано ниже:
1.
DECLARE
str VARCHAR2(100);
result VARCHAR2(100);
BEGIN
str := 'first,last,middle';
SELECT str INTO result FROM dual;
dbms_output.put_line('str: '||result);
END;
/
2. As your SELECT query is producing more than one row it can not be assigned into a scalar variable.
DECLARE
str VARCHAR2(100);
BEGIN
FOR I IN(
WITH TEST AS
(SELECT 'first,last,middle' AS str FROM dual)
SELECT regexp_substr(str, '[^,]+', 1, ROWNUM) AS separatedstr
FROM TEST
CONNECT BY ROWNUM <= LENGTH(str) - LENGTH(REPLACE(str, ',', '')) + 1) LOOP
dbms_output.put_line(I.separatedstr);
END LOOP;
END;
/
Надеюсь, это поможет.