我的错误的过程:
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;这种形式那不惨了呀?
有没有解决方案?谢谢
解决方案 »
- oracle中的reference和references有何不同
- 数据库优化
- 复杂的数据导出(寻高手)
- 请教一统计的SQL语句
- 请问oracle中怎么样输入一个图片,视频,DATE等信息
- 大家来看看我这个存储过程合理吗?
- 哪位大侠知道VB+ADO+Oracle操作图片或者文件存取?谢谢!
- IIS5.0连接Oracle9i2出现的问题,指定驱动程序无法加载,非常奇怪!
- 请问如何用sql看到一个用户的所有表的列名
- 如何在存储过程中更新或则插入clob 和 blob类型的字段
- 使用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) 所说的 指明基于事务的怎么写的?
谢谢 !