我的错误的过程:
create or replace procedure ProName
is
begin
......
create global temporary table Tmp_EspecialUser (
EspecialUserID varchar(11) null,
CutListID varchar(11) null,
Detail varchar(255) null
) on commit preserve rows ;
......
end proName;
---网友提出解决方案:--------------------------------------------------use dynamic sql:
execute immediate 'create ...';
通过!
---新问题--------------------------------------------------------------
但是我接下来就要对这个临时表进行很多操作那不是每个都得进行动态操作?
例如我要对那进行数据的插入,
然后对它定义游标对里面的数据进行分析。
如果每个操作都用execute immediate str;这种形式那不惨了呀?
有没有解决方案?谢谢
create or replace procedure ProName
is
begin
......
create global temporary table Tmp_EspecialUser (
EspecialUserID varchar(11) null,
CutListID varchar(11) null,
Detail varchar(255) null
) on commit preserve rows ;
......
end proName;
---网友提出解决方案:--------------------------------------------------use dynamic sql:
execute immediate 'create ...';
通过!
---新问题--------------------------------------------------------------
但是我接下来就要对这个临时表进行很多操作那不是每个都得进行动态操作?
例如我要对那进行数据的插入,
然后对它定义游标对里面的数据进行分析。
如果每个操作都用execute immediate str;这种形式那不惨了呀?
有没有解决方案?谢谢
解决方案 »
- net8的配置问题
- oracle跨库两表联合查询没数据
- oracle存储过程,test(测试)时传自定义类型参数问题
- Date类型相减,差值为分钟,如何去处理
- oracle delete语句级触发器 能不能获得删除的信息呢?怎么获得呢?
- 求助:大数据量统计提高效率的方法
- 求脚本!急!谢谢!
- 一个触发器的问题,当插入A表时,再插入B表
- system表空间 满了怎么办?
- 关于oracle 9i 和oracle 10g的比较
- 使用oracle开发的留下联系方式: qq和msn
- 【delphi+oracle报表解决方案(二)】临时表的使用---关键字:oracle,delphi,报表,临时表,存储过程
对应数据库操纵语句是可以直接写的,如: INSERT INTO TABLE_NAME VALUES('AA',334); SELECT AA INTO S_AA FROM TABLE_NAME;这些都可以还有什么疑问呢?
其实,这也没什么大不了的,为了通用性,也就是编写起来有点麻烦,可执行得一点也不麻烦吗。要不,你只能将你的临时表改为静态创建的了。
临时表的实质就是 为每个会话(应用程序) 都保存各自独立的数据。存储过程的话我觉得是每个用户的数据不同,故必须用临时表(附:我们现在的系统用的三层结构,多个客户端,应用层只有一个,所有只有一个会话与后台数据库通信,三层里面临时表好像发挥不了作用,这个我也没实际测试过。)楼主的情况 将临时表先创建好就行了,把你的create语句在sql plus里执行一遍就行了
实际上如果你操作有水平的话,可改变临时表的字段,因为我们可将sql 语句写成字符串的形式来逃过oracle 对临时表的编绎检查(针对sql 语句能否对临时表操作)
hushuangyang(hushuangyang) 所说的 指明基于事务的怎么写的?
谢谢 !