oracle PL/SQL过程-编译错误ORA-24344

7nbnzgx9  于 2023-08-04  发布在  Oracle
关注(0)|答案(1)|浏览(183)

我无法通过Aqua Data Studio在Oracle DB中创建存储过程,同时访问其他模式中的数据。我的结构描述:RS系统

CREATE PROCEDURE PROC_Vtest
(v_test_details out SYS_REFCURSOR)
AS
BEGIN
open v_test_details for 
SELECT * FROM AS.v_test_table;
END PROC_Vtest;

字符串
错误:ORA-24344:成功,但有编译错误
如何解决这个问题?“
我尝试执行程序,但没有出现错误消息。我希望在Oracle数据库中创建一个存储过程,但数据位于其他人的模式中。

zpjtge22

zpjtge221#

你能给我一个示例语法来创建一个存储过程在我的模式[RS],但数据位于不同的模式[AS.TableA]
在这种情况下,用户AS必须向您的用户(RS)授予(至少)select权限。如果您要在命名的PL/SQL过程中使用其他用户的表(这就是您所拥有的),则必须直接向您授予此类授权,而不是通过角色。
于是:

connect as/its_password
grant select on v_test_Table to rs;

字符串
在你自己的模式中,也许你更愿意创建一个函数(或者一个过程,这并不重要):

connect rs/its_password
create or replace function f_test return sys_refcursor
is
  retval sys_refcursor;
begin
  open rc for select * from as.v_test_table;
  return rc;
end;
/
select f_test from dual;

相关问题