循环立即执行

问题描述 投票:0回答:1

我想循环之前连接的动态查询。然而,即使是这个简单的例子

begin
  for rec in (execute immediate 'select dummy from dual') loop
    dbms_output.put_line(rec.dummy);
  end loop;
end;

我收到错误

在期待以下其中一项时立即遇到符号

如何实现这样的循环?

oracle for-loop plsql execute-immediate
1个回答
0
投票

不能直接使用立即执行在游标中进行循环。 相反,您需要一个“参考光标”:

DECLARE
    v_cur SYS_REFCURSOR;  -- Declare a cursor variable
    rec   VARCHAR2(100);  -- Variable to hold the result of each row
BEGIN
    -- Open the cursor for the dynamic SQL query
    OPEN v_cur FOR 'SELECT dummy FROM dual';
    
    -- Fetch each row from the cursor
    LOOP
        FETCH v_cur INTO rec;  -- Fetch each row into 'rec'
        EXIT WHEN v_cur%NOTFOUND;  -- Exit the loop when no more rows
        --DO STUFF YOU NEED FOR EACH INDEX HERE
    END LOOP;
    
    CLOSE v_cur;  -- Close the cursor
END;
© www.soinside.com 2019 - 2024. All rights reserved.