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 ;

请问哪错了吗?
展开
 我来答
百度网友0583ac2ea
2011-01-20 · TA获得超过957个赞
知道小有建树答主
回答量:167
采纳率:0%
帮助的人:216万
展开全部
这个过程就行了。。
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'; 当如果数据库中不存在这张表的时候就会报错的。。
上面是对数据库中是否存在表进行了判断,因此能够避免“表不存在”这样的错误。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式