如下如表T表结构如下:
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')
动态执行语句为:BEGIN
EXECUTE IMMEDIATE 'SELECT * FROM T';
END;
问题:
请问如何能够将动态执行语句的结果显示出来?
可不可以提供一些EXECUTE IMMEDIATE的学习资料?
谢谢大家了!!!
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')
动态执行语句为:BEGIN
EXECUTE IMMEDIATE 'SELECT * FROM T';
END;
问题:
请问如何能够将动态执行语句的结果显示出来?
可不可以提供一些EXECUTE IMMEDIATE的学习资料?
谢谢大家了!!!
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.
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;
还可以这样用
v_val NUMBER(5);EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM T ' INTO v_val;如果SQL文里有2个字段,查询结果是一条记录,那么也可以INTO AAAA, BBBB