oralce存储过程中创建的临时表(或物理表)当打开一个游标进入LOOP后,表或视图不存在
oralce存储过程中,创建了临时表(或物理表),当打开一个游标,进入LOOP后,临时表就找不到了。如果把建表放在LOOP内,每次循环都会重建。谁知道这是咋了。。。。。。...
oralce存储过程中,创建了临时表(或物理表),当打开一个游标,进入LOOP后,临时表就找不到了。如果把建表放在LOOP内,每次循环都会重建。谁知道这是咋了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
展开
2个回答
展开全部
执行存储过程中,要想执行create。drop一类的语句,不能直接使用,需要执行命令的语句来让他们执行,如下
execute immediate 'create table invbasdoc as select * from test_abcd';
须使用execute immediate命令语句。
提醒一句:创建之前,最好先进行一个是否有这个表的判断,如果有,先删除,再建立,如下:
create or replace procedure wym
authid current_user
is
vn_ctn number(2);
begin
select count(*) into vn_ctn from user_all_tables a where a.table_name like upper('invbasdoc');
if vn_ctn > 0 then
execute immediate 'drop table invbasdoc';
end if;
execute immediate 'create table invbasdoc as select * from test_abcd';
/*后续操作语句*/
end ;
希望对你有帮助,记得采纳哦~~
execute immediate 'create table invbasdoc as select * from test_abcd';
须使用execute immediate命令语句。
提醒一句:创建之前,最好先进行一个是否有这个表的判断,如果有,先删除,再建立,如下:
create or replace procedure wym
authid current_user
is
vn_ctn number(2);
begin
select count(*) into vn_ctn from user_all_tables a where a.table_name like upper('invbasdoc');
if vn_ctn > 0 then
execute immediate 'drop table invbasdoc';
end if;
execute immediate 'create table invbasdoc as select * from test_abcd';
/*后续操作语句*/
end ;
希望对你有帮助,记得采纳哦~~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询