我正面临PL / SQL存储过程的问题。我有一个名为sp1的SP,我使用ODT for VS2010部署到我的oracle架构,我可以毫无问题地执行。
当我尝试从部署之前已经存在于模式中的另一个名为sp2的存储过程执行sp1时,问题就被解除了(我在sp2的主体中添加对sp1的调用并直接从同一模式调用sp2)。通过这种方式我得到的只是ORA-01031 insufficient privileges
例外。
我用Google搜索,发现问题是由于AUTHID CURRENT_USER
语句中缺少子句CREATE PROCEDURE
。我在另一个带有该子句的包中创建了另一个名为sp3的存储过程,并在其中插入了对sp1的调用。有了这个修改执行工作。
create or replace procedure sp3(string param)
authid current_user
as
begin
sp1(param);
end;
不幸的是我不能接受这个解决方案因为我必须使用已经存在的包(至少有M个应用程序使用sp2程序并且直接在每个程序中添加sp3或sp1是不可能的)。我将版本11用于oracle服务器和客户端。
有什么想法吗?