因为 tmp 表本身是不存在,要动态创建才有,所以操作原先不存的对象也要动态.把: INSERT INTO tmp VALUES(1); 改成
EXECUTE IMMEDIATE 'INSERT INTO tmp VALUES(1)'; 就可以了.
EXECUTE IMMEDIATE 'INSERT INTO tmp VALUES(1)'; 就可以了.
解决方案 »
- 这种情况下SQL怎么写
- 小弟想学Oracle,推荐一本相关书籍吧
- 控制文件备份出错(xp系统)
- oracle job 能手动设置作业编号吗?oracle job 能手动设置作业编号吗?oracle job 能手动设置作业编号吗?
- ORA 12514 哪位高手来看下!!
- 头疼的科目余额计算
- 各位大哥,快来帮我!
- 请问在建oracle用户时,start-up program是选择/usr/bin/sh 还是/sbin/sh
- 利用OCI作一个数据迁移的小工具
- ORACLE7.3导出的数据库备份文件导入ORACLE8.17出现如下错误:
- 一个SQL 问题。比较麻烦。请大家帮我一起动动脑子。
- 请问oci的慨念是指什么?
other databases the main exception being that they are 'statically' defined.
You create them once per database, not once per stored procedure in the
database. They always exist but appear empty until you put data in them. They
may be SESSION based (data survives a commit but not a disconnect/reconnect).
They may be TRANSACTION based (data disappears after a commit).
1。会话特有的临时表
CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification> )
ON COMMIT PRESERVE ROWS; 2。事务特有的临时表
CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification> )
ON COMMIT DELETE ROWS;
CREATE GLOBAL TEMPORARY TABLE MyTempTable
所建的临时表虽然是存在的,但是你试一下insert 一条记录然后用别的连接登上去select,记录是空的,明白了吧。
下面两句话再贴一下:
--ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)
--ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。
记得以前测试过,是这样:
字典管理+永久 (EXTENT MANAGEMENT DICTIONARY +PERMANENT )
本地管理+临时 (EXTENT MANAGEMENT LOCAL + TEMPORARY )