以下是两个用户scott和test各建一个过程,pro_Bd调用pro_A, 执行过程如下,希望对你有帮助 SQL> connect sys/oracle as sysdba Connected. SQL> create user test identified by test;User created.SQL> alter user test default tablespace users;User altered.SQL> grant connect,resource,create any procedure to test;Grant succeeded.SQL> connect scott/tiger; Connected. SQL> create or replace procedure pro_A 2 as 3 begin 4 null; 5 end; 6 /Procedure created.SQL> grant execute procedure to test; grant execute procedure to test * ERROR at line 1: ORA-00990: missing or invalid privilege SQL> edi Wrote file afiedt.buf 1* grant execute pro_A to test SQL> / grant execute pro_A to test * ERROR at line 1: ORA-00990: missing or invalid privilege SQL> edi Wrote file afiedt.buf 1* grant execute on pro_A to test SQL> /Grant succeeded.SQL> connect test/test Connected. SQL> create or replace procedure pro_B 2 as 3 begin 4 scott.pro_A; 5 end; 6 /Procedure created.SQL> begin 2 pro_B; 3 end; 4 /PL/SQL procedure successfully completed.
同一用户下的两个存储过程调用SQL> connect scott/tiger Connected. SQL> create or replace procedure pro_A 2 as 3 begin 4 null; 5 end; 6 /Procedure created.SQL> create or replace procedure pro_B 2 as 3 begin 4 pro_A; 5 end; 6 /Procedure created.SQL> begin 2 pro_B; 3 end; 4 /PL/SQL procedure successfully completed.SQL>
請樓上的人繼續幫忙!
如果是在A中调用B,出现的错误是说,B没有定义。A中调用B,再A中直接写存储过程名: BEGINB;END;
不可实现,是否需要一个调用函数。
执行过程如下,希望对你有帮助
SQL> connect sys/oracle as sysdba
Connected.
SQL> create user test identified by test;User created.SQL> alter user test default tablespace users;User altered.SQL> grant connect,resource,create any procedure to test;Grant succeeded.SQL> connect scott/tiger;
Connected.
SQL> create or replace procedure pro_A
2 as
3 begin
4 null;
5 end;
6 /Procedure created.SQL> grant execute procedure to test;
grant execute procedure to test
*
ERROR at line 1:
ORA-00990: missing or invalid privilege
SQL> edi
Wrote file afiedt.buf 1* grant execute pro_A to test
SQL> /
grant execute pro_A to test
*
ERROR at line 1:
ORA-00990: missing or invalid privilege
SQL> edi
Wrote file afiedt.buf 1* grant execute on pro_A to test
SQL> /Grant succeeded.SQL> connect test/test
Connected.
SQL> create or replace procedure pro_B
2 as
3 begin
4 scott.pro_A;
5 end;
6 /Procedure created.SQL> begin
2 pro_B;
3 end;
4 /PL/SQL procedure successfully completed.
Connected.
SQL> create or replace procedure pro_A
2 as
3 begin
4 null;
5 end;
6 /Procedure created.SQL> create or replace procedure pro_B
2 as
3 begin
4 pro_A;
5 end;
6 /Procedure created.SQL> begin
2 pro_B;
3 end;
4 /PL/SQL procedure successfully completed.SQL>
把你的两个存储过程贴出来看看
InPar IN VARCHAR2
,ErrSt OUT VARCHAR2
,RetSt OUT VARCHAR2 )asbegin .
.
.--調用時傳進的字符串
vardiaoyong:=concat(concat(vartwo,'$'),'0');
vardiaoyong:=concat(concat(vardiaoyong,'$'),CUR_REC.DELINO);
vardiaoyong:=concat(concat(vardiaoyong,'$'),'');
vardiaoyong:=concat(concat(vardiaoyong,'$'),maxoiban);
vardiaoyong:=concat(concat(vardiaoyong,'$'),CUR_REC."STORE");
vardiaoyong:=concat(concat(vardiaoyong,'$'),CUR_REC.OKANA);
vardiaoyong:=concat(concat(vardiaoyong,'$'),CUR_REC.ONAME);
vardiaoyong:=concat(concat(vardiaoyong,'$'),CUR_REC.OTELNO);
vardiaoyong:=concat(concat(vardiaoyong,'$'),'');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'');
vardiaoyong:=concat(concat(vardiaoyong,'$'),CUR_REC.OZIPCD);
vardiaoyong:=concat(concat(vardiaoyong,'$'),CUR_REC.OADDRESS1);
vardiaoyong:=concat(concat(vardiaoyong,'$'),CUR_REC.OADDRESS2);
vardiaoyong:=concat(concat(vardiaoyong,'$'),CUR_REC.OADDRESS3);
vardiaoyong:=concat(concat(vardiaoyong,'$'),'0');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'');
vardiaoyong:=concat(concat(vardiaoyong,'$'),to_date(CUR_REC.SALESDATE));
vardiaoyong:=concat(concat(vardiaoyong,'$'),'0');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'0');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'0');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'0');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'0');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'');
vardiaoyong:=concat(concat(vardiaoyong,'$'),'');
vardiaoyong:=concat(concat(vardiaoyong,'$'),CUR_REC.IKANA);
vardiaoyong:=concat(concat(vardiaoyong,'$'),CUR_REC.INAME);
vardiaoyong:=concat(concat(vardiaoyong,'$'),CUR_REC.ITELNO);
vardiaoyong:=concat(concat(vardiaoyong,'$'),sysdate);
vardiaoyong:=concat(concat(vardiaoyong,'$'),varstUID);
vardiaoyong:=concat(concat(vardiaoyong,'$'),sysdate);
vardiaoyong:=concat(concat(vardiaoyong,'$'),varstUID);
vardiaoyong:=concat(concat(vardiaoyong,'$'),'1');----------------------------------------------以上是要从这里传到RIS_CUSTOMER_INFO_UPDATE--調用其他存儲過程RIS_CUSTOMER_INFO_UPDATE; .
.
.
end RIS_CUSTOMER_INSERT2;
‘RIS_CUSTOMER_INFO_UPDATE’の呼出しで、引数の数または型が正しくありません。我的系统是日文所以错误也是日文的,翻译过来就是:参数沒有形式。