我使用plsql执行返回一组记录,然后根据结果更新此记录..我被卡住了......
因为我的SELECT语句返回超过1行。那么我该如何将所有行返回到VARIABLE中..因为我不断得到以下错误:PL / SQL:ORA-00947:没有足够的值
附件是代码片段。
BEGIN
-- Set Variables
v_ArchivedDate := '01-JAN-14'; -- Enter Variable
v_Results := '0';
-- This get current date/time minus 31 days ago
SELECT TO_CHAR(systimestamp-31, 'DD-MON-YY HH.MI.SS') INTO v_ArchivedDate
FROM dual;
dbms_output.put_line('Date to Set Archived_At Column :' || ' ' || v_ArchivedDate);
这是脚本似乎失败的上述错误
SELECT * INTO v_results
FROM message
WHERE from_entity IN
(SELECT entity_id FROM user_info
WHERE UPPER(directory_auth_id) = 'USER100');
我是plsql的新手,所以在mo的学习曲线上......
所以我需要选择某种GROUPSET / ARRAY等等。不确定。
谢谢你的期待。 Boardman
答案 0 :(得分:0)
假设您的消息表有列文本,您可以使用以下内容:
DECLARE
TYPE t_results IS TABLE OF VARCHAR2(50) INDEX BY pls_integer;
v_results t_results;
BEGIN
SELECT text BULK COLLECT INTO v_results
FROM message
WHERE from_entity IN
(SELECT entity_id FROM user_info
WHERE UPPER(directory_auth_id) = 'USER100');
FOR i IN v_results.FIRST .. v_results.LAST
LOOP
dbms_output.put_line(v_results(i));
END LOOP;
END;