oracle 存储过程建表
createorreplaceprocedurewymauthidcurrent_userisbeginexecuteimmediate'droptableinvbasd...
create or replace procedure wym
authid current_user
is
begin
execute immediate 'drop table invbasdoc';
execute immediate 'create table invbasdoc as select * from bd_invbasdoc';
end ;
请问哪错了吗? 展开
authid current_user
is
begin
execute immediate 'drop table invbasdoc';
execute immediate 'create table invbasdoc as select * from bd_invbasdoc';
end ;
请问哪错了吗? 展开
1个回答
展开全部
这个过程就行了。。
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 'drop table invbasdoc'; 当如果数据库中不存在这张表的时候就会报错的。。
上面是对数据库中是否存在表进行了判断,因此能够避免“表不存在”这样的错误。。
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 'drop table invbasdoc'; 当如果数据库中不存在这张表的时候就会报错的。。
上面是对数据库中是否存在表进行了判断,因此能够避免“表不存在”这样的错误。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询