当前位置: 代码迷 >> Oracle管理 >> 动态sql语句怎么输出多行查询结果
  详细解决方案

动态sql语句怎么输出多行查询结果

热度:70   发布时间:2016-04-24 05:12:37.0
动态sql语句如何输出多行查询结果
如下如表T
SQL code
表结构如下:A                      B          ---------------------- ---------- 1                      AAA        2                      BBB        3                      CCC      创建和插入语句如下:CREATE TABLE T(A NUMBER,B VARCHAR2(10))INSERT INTO T VALUES(1,'AAA')INSERT INTO T VALUES(2,'BBB')INSERT INTO T VALUES(3,'CCC')

动态执行语句为:
SQL code
BEGIN EXECUTE IMMEDIATE 'SELECT * FROM T';END;

问题:
请问如何能够将动态执行语句的结果显示出来?
可不可以提供一些EXECUTE IMMEDIATE的学习资料?
谢谢大家了!!!

------解决方案--------------------
多行应该要使用动态游标了吧..
SQL code
DECLARE type c_curref is ref cursor;r_curref c_curref;rec_t t%ROWTYPE;BEGIN OPEN r_curref FOR 'SELECT * FROM T'; LOOP FETCH r_curref INTO rec_t; EXIT WHEN r_curref%NOTFOUND;   Dbms_Output.put_line(rec_t.a||'  '||rec_t.b); END LOOP; CLOSE r_curref;END;6  PL/SQL block, executed in 0 sec.   1  AAA                             2  BBB                             3  CCC                             Total execution time 0 sec.
------解决方案--------------------
EXECUTE IMMEDIATE...
SQL code
DECLARE v_a t.a%TYPE;v_b t.b%TYPE;BEGIN  EXECUTE IMMEDIATE 'SELECT * FROM T WHERE ROWNUM=1' INTO v_a,v_b;  Dbms_Output.put_line(v_a||'  '||v_b);END;
------解决方案--------------------
EXECUTE IMMEDIATE 'SELECT * FROM T';
还可以这样用


v_val NUMBER(5);

EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM T ' INTO v_val;

如果SQL文里有2个字段,查询结果是一条记录,那么也可以INTO AAAA, BBBB
  相关解决方案