извлекать параметр из хранимой процедуры?

Я создал одну хранимую процедуру в оракуле:

PROCEDURE string_opp(input_string IN varchar2,output_string OUT varchar2)

Теперь проблема заключается в том, как выполнить эту хранимую процедуру и получить выходной параметр. Следуйте за разработчиком sql:

SET SERVEROUTPUT ON
DECLARE
  outputString VARCHAR;
BEGIN
  EXEC string_opp('input String',:outputString);
END;

Когда я попробовал это, я ничего не получил, может кто-нибудь мне помочь?

Ответ 1

Всего несколько вопросов:

SET SERVEROUTPUT ON
DECLARE
   outputString VARCHAR(20);
BEGIN
  string_opp('input String', outputString);
  dbms_output.put_line(outputString);
END;

Вы можете использовать одну и ту же переменную:

SET SERVEROUTPUT ON
DECLARE
   outputString VARCHAR(20);
BEGIN
  outputString := 'input String';
  string_opp(outputString);
  dbms_output.put_line(outputString);
END;

Просто определите свой параметр процедуры как IN OUT вместо просто OUT.

Проверьте этот ресурс:

http://psoug.org/snippet/FUNCTIONS-IN-OUT-parameter_873.htm

Ответ 2

Скажем:

Если у вас есть процедура Store с выходным параметром:

Create procedure test(name out varchar2(50))
as
begin
name:='testing output parameter';
-- dbms_output.put_line('Output parameter value ' || name );
end;

Теперь выполните описанную выше процедуру:

declare
l_name varchar2(50);
begin
test(l_name);
dbms_output.put_line( 'name = ' || l_ename );
end;