2013-06-25 5 views
1

У меня есть хранимая процедура, которая делает оператор select. Я создал другую хранимую процедуру, которая вызывает ранее хранимую процедуру, но позволяет получить результат. Ниже приведены сценарииВозвращаемый результат из хранимой процедуры

Proc1:

create or replace 
PROCEDURE p_procedure3(custid IN number, custname OUT varchar2) IS 
BEGIN 

SELECT firstname 
INTO custname 
FROM customer_s 
WHERE customerid = custid; 

END p_procedure3; 

proc2:

create or replace 
procedure finalexecution 
DECLARE 
l_name varchar2(20); 
BEGIN 

p_procedure3(644, l_name); 

dbms_output.put_line(l_name); 

END; 

но когда это делают exex finalexecution;

становится ниже ошибки

Error starting at line 8 in command: 
exec finalexecution 
Error report: 
ORA-06550: line 1, column 7: 
PLS-00905: object CIMNEWUSER.FINALEXECUTION is invalid 
ORA-06550: line 1, column 7: 
PL/SQL: Statement ignored 
06550. 00000 - "line %s, column %s:\n%s" 
*Cause: Usually a PL/SQL compilation error. 
*Action: 

ответ

1

Изменение второй процедура:

create or replace 
procedure finalexecution as 
    l_name varchar2(20):=''; 
BEGIN 
    p_procedure3(644, l_name); 
    dbms_output.put_line(l_name); 
END; 

Для получения более подробной информации см Call a stored procedure with another in Oracle

2

Ваша finalexecution процедура содержит ошибку. Вы должны использовать IS или AS вместо DECLARE. Проверьте documentaion для более подробной информации.

Также в случае ошибки, вы можете проверить вид all_errors, чтобы узнать, что вызывает ошибку.

+0

вопрос решается. теперь следующая вещь: я хочу получить несколько строк, я написал этот скрипт, найди его ниже, я знаю, что где-то я должен идти с циклом, но не могу этого сделать, пожалуйста, назовите меня ниже, это сценарий, который дает мне результат для последнего id – mahesh

Смежные вопросы