解决方案 »
- 我的监听配了3个小时都没成功 无语了 求助 上个帖子被人回复了无法修改
- 索引有效性问题
- vs2008 访问 oracle 数据库出错
- 关于tablespace 的 storage问题,急~
- ORA-00984: column not allowed here问题,在线等,急!!!!!!!!!!!!
- 请教存储文件到数据库的问题!
- 在执行select语句时出现ora-00600的问题?求助怎么样处理?在线等!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 请问怎样关闭SQL_TRACE?
- 请问我怎么创建一个表通过sqlplus,
- 为什么OMS启动不了?
- orcale 函数 索引问题
- 关于Oracle数据库 特殊字符处理的问题
2 COL1 VARCHAR2(10),
3 COL2 VARCHAR2(10)
4 ) ON COMMIT delete ROWS
5 /Table createdSQL>
没有报错,你自己操作问题吧
----------
1SQL> delete from t_temp;1 row deletedSQL> drop table t_temp;Table droppedSQL>
begin
execute immediate '
CREATE GLOBAL TEMPORARY TABLE T_TEMP (
COL1 VARCHAR2(10),
COL2 VARCHAR2(10)
) ON COMMIT delete ROWS';
/*为什么上面创建表时,如果不用execute immediate,直接执行create语句会报错*/--因为plsql程序里面不能发出ddl语句,想发出ddl语句必须采用动态sql,这是规则,没什么可解释的execute immediate 'insert into t_temp values(''aaa'',''bbb'')';
/*为什么这里不用execute immediate查询,直接insert,会提示表不存在*/--因为你执行plsql程序的时候,oracle会先检查你的语法逻辑,如果你写成
--insert into t_temp values('aaa','bbb'); 在执行的时候oracle在语法检查后,会检查表存不存在
--显然这个答案是否定的,执行的时候 t_temp表并不存在,因此检查失败报错
--但是你使用动态sql写法,oracle就会不检查上面的内容了,因此过了。execute immediate 'select count(*) from t_temp' into v_num;--这里是一样的dbms_output.put_line(v_num);
execute immediate 'delete from t_temp';
commit;
execute immediate 'drop table t_temp';
end;