如下如表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的学习资料?
谢谢大家了!!!
解决方案 »
- 这个怎么玩?
- oracle92 建立网络服务ORA-12514错误
- 请问inline view是什么意思
- 如何把一个永久表空间变为临时表空间?
- !!!oracle故障,请帮忙!!!
- 同志们,我的oracle9i数据库今天因为误操作sql语句,把所有的表都删掉了,能恢复吗
- 程序报oralce错误 ora-00604:递归SQL层1出现错误,回答者都有分
- 关于修改表 alter 请教!!急呀,大哥,快来帮忙!!
- oracle 更新varchar2字段为"" 出现乱码
- Oracle编写一个程序块
- alter database rename file命令
- 请问下oracle有类似mysql “LOCK TABLE 表 WRITE”
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