oracle 怎么在存储过程中创建一个临时表,在里面插入数据,再查找这个临时表的所有数据,最后drop这个表。 30

每次编译的时候在insert语句出都会出现找不到表的数据,如果用EXCUSEIMMEDIATE来插入能编译过去,但是执行的时候会出错,提示“列在此处不允许”。有高人给我的... 每次编译的时候在insert语句出都会出现找不到表的数据,如果用EXCUSE IMMEDIATE来插入能编译过去,但是执行的时候会出错,提示“列在此处不允许”。有高人给我的例子吗。 展开
 我来答
czqcs314
2011-05-08 · 超过10用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:0
展开全部
不知哗橡槐道楼主的需求如何
一般没如耐必要创建临时表,处理数据后又它drop。
存储过程中要用到的表应该会经常用到。就让它存在吧,用完用 truncate table 清理数据就可以乱友了。
空表不会占很多资源。 我们就是这样做的。
追问
如果不删除表的话多用户操作会不会出现问题。我这样做也就是防止这一点。
追答
多用户操作确实会出问题。
可以在临时表里面加一个批次标志字段,每次运行存储过程插入数据时加上批次标志,处理后将此批次的数据删除就可以,不用truncate table,这样就不会影响到其它会话调用存储过程。
wangzhiqing999
2011-05-07 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3239万
展开全部
Oracle 的临时表的 处理机制, 和 SQL Server 的不一样。

假如你的临时表的拦隐结构不是每次执行都发生变化的话
那么就是事先 通过 CREATE GLOBAL TEMPORARY TABLE 语句,把临时表建立好。
存储过程里面,就根据需要, 执行 INSERT / SELECT 之类的操作就可以了。
至于什么事情清理临时表的数据,就取决于敏饥你的临时表是 基于会话的临时表 还是 基于事务的临时表 了。

假如你的临时表的结构是每次执行都有可能发生变化的,没办法,必须动态创建的桥衡返话......
这个我暂时还没学到那么透彻。

参考资料: http://hi.baidu.com/wangzhiqing999/blog/item/b390c139012393e03c6d9756.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mailking2001
2011-05-07 · TA获得超过817个赞
知道小有建树答主
回答量:1037
采纳率:100%
帮助的人:744万
展开全部
create procduce test
is
isql varchar2(200);
dptable varchar2(100):='drop table test';
begin
isql:='create global temporary table test (sid int,sname varchar2(20)) on commit delete rows';
execute immediate isql; --创建临时表
insert into test values (1,'abc');
execute immediate dptable; ---删除临时表
end;

-------------------
对于oracle 临时表在存储过程中调用,我是觉得这视乎没什么意义,oracle 提供在数据库里预定义临时表,只有在调用的时候才会在临时猜掘判表空间里分配空间散蠢,也就是说你可穗改以提前在数据库里创建临时表,然后再到存储过程里直接调用临时表就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
妖孽小四
2012-03-27
知道答主
回答量:39
采纳率:0%
帮助的人:27.3万
展开全部
我现在和你遇到一仔颤辩模一样的问题,应该是你动态拼sql的时候出的问题,类似下面 sqls:='INSERT INTO temp_sc_gds_product_spec
(ID, CREATE_TIME,
SPEC_ID,
SPEC_VALUE_ID,
GOODS_ID,
PRODUCT_ID
)
VALUES
(UUID(), sysdate, ' || '''' || specId ||'''' ||','|| '''' || strIndexSubstr ||'''念缺' ||','|| '''' || goodsId || '''' || ',' ||'洞悄''' || productId || '''' || ')';
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lwpriag
2011-05-15 · TA获得超过1282个赞
知道小有建树答主
回答量:690
采纳率:0%
帮助的人:376万
展开全部
见图,直接不能回复
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式