PL/SQL - dbms 输出立即执行的结果
Posted
技术标签:
【中文标题】PL/SQL - dbms 输出立即执行的结果【英文标题】:PL/SQL - dbms output the result of an execute immediate 【发布时间】:2011-05-29 07:38:05 【问题描述】:我希望能够打印出查询的所有结果(应由 TableA 中的 PK 过滤)并为 TABLEA 中的每个 PK 执行此操作。 这是我到目前为止所拥有的:
DECLARE
CURSOR Curs IS SELECT DISTINCT PKID FROM TABLEA;
BEGIN
FOR rec IN Curs
LOOP
EXECUTE IMMEDIATE
'SELECT * FROM (
SELECT cola,
FKTABLEA,
colc,
lag (cold,1) OVER (ORDER BY cold) AS cold
FROM tableB
WHERE FKTABLEA = :1)
WHERE colc != cold
order by cola' using Curs.PKID;
DBMS_OUTPUT.PUT_LINE('OUTPUT ALL RESULTS FROM THE QUERY HERE');
END LOOP;
END;
【问题讨论】:
【参考方案1】:无需使用 EXECUTE IMMEDIATE。而且只有完全手动的方式来打印所有结果:
DECLARE
CURSOR Curs IS SELECT DISTINCT PKID FROM TABLEA;
BEGIN
FOR rec IN Curs LOOP
FOR r IN (
SELECT * FROM (
SELECT cola,
FKTABLEA,
colc,
lag (cold,1) OVER (ORDER BY cold) AS cold
FROM tableB
WHERE FKTABLEA = rec.PKID)
WHERE colc != cold
order by cola )
LOOP
DBMS_OUTPUT.PUT_LINE(r.cola || ',' || r.colb || ',' || r.colc || ',' || r.cold);
END LOOP;
END LOOP;
END;
【讨论】:
以上是关于PL/SQL - dbms 输出立即执行的结果的主要内容,如果未能解决你的问题,请参考以下文章
如何为 PL/SQL 中的 dbms 输出打印的值提供别名?