动态sql语句怎么输出多行查询结果
动态sql语句如何输出多行查询结果
如下如表T
动态执行语句为:
问题:
请问如何能够将动态执行语句的结果显示出来?
可不可以提供一些EXECUTE IMMEDIATE的学习资料?
谢谢大家了!!!
------解决方案--------------------
多行应该要使用动态游标了吧..
如下如表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