我目前正在使用以下内容遍历PL/SQL中的值:
for c in (select * from example_table where name is not null) loop
-- logic
end loop; 我想用动态SQL语句替换SQL语句,例如:
l_sql := 'select * from example_table where || l_col || is not null';
for c in (l_sql) loop
-- logic
end loop; 这个是可能的吗?
诚挚的问候
发布于 2019-01-31 11:27:16
对于隐式游标循环( for loop中的select ),这是不可能的。您可以通过记录变量为tablename%ROWTYPE的REFCURSOR使用传统的OPEN .. FETCH .. LOOP
DECLARE
t_rec example_table%ROWTYPE;
l_sql VARCHAR2(1000);
v_cur SYS_REFCURSOR;
l_col varchar2(32) := 'MY_COLUMN';
BEGIN
l_sql := 'select * from example_table where '|| l_col || ' is not null';
OPEN v_cur FOR l_sql;
LOOP
FETCH v_cur INTO t_rec; --fetch a row
EXIT WHEN v_cur%NOTFOUND;
-- your logic using t_rec columns.
END LOOP;
CLOSE v_cur;
END;
/https://stackoverflow.com/questions/54451824
复制相似问题