oracle运行存储过程报PLS-00201: 必须声明标识符

存储过程大概情况是这样,这个存储过程用于数据更新写法和下面差不多createorreplaceprocedurepro_testasbeginexecuteimmedia... 存储过程大概情况是这样,这个存储过程用于数据更新写法和下面差不多
create or replace procedure pro_test
as
begin
execute immediate 'truncate table test_temp';
insert into test_temp
select a.id,a.name,b.code,b.cname from tab1 a inner join tab2 b on a.id=b.id;

delete test where id in(select id from test_temp);

insert into test
select * from test_temp;
end pro_test;

建好后编译通过,到pl/sql的命令窗口执行exec pro_test;
就报PLS-00201: 必须声明标识符 'PRO_TEST';
编译是通过的,对过程右键点测试,这个过程能起作用,就是调用时报那个错。
展开
 我来答
zhang353868891
2011-03-22
知道答主
回答量:47
采纳率:0%
帮助的人:20.1万
展开全部
如果要在存储过程中执行该包,必须显示的(明确的)为该用户赋予其执行权。使用SYS或者SYSTEM登录,为其赋予execute 权。
snakehe
2011-03-22
知道答主
回答量:6
采纳率:0%
帮助的人:9254
展开全部
你用Oracle帐号登入,执行 begin pro_test ; end; 看会不会报错。若正常表示你的存储过程没有问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Andy_Sun321
推荐于2017-09-06 · TA获得超过1376个赞
知道小有建树答主
回答量:811
采纳率:89%
帮助的人:717万
展开全部
存储过程名之后加上一对小括号执行试试。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
loverBB_h
2011-03-22 · TA获得超过274个赞
知道小有建树答主
回答量:424
采纳率:0%
帮助的人:340万
展开全部
是不是创建过程和执行过程不是同一个用户
追问
是同一个用户下,我用C#也调用过,也报这个错
追答
换个名字再试一下
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangxuan1102
2011-03-22 · TA获得超过532个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:302万
展开全部
存储过程后面是不是应该有括号,你这个应该是没有参数的存储过程?
追问
没有括号,编译通过了,点测试也有效。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式