14

我 在 oracle中创建了一个存储过程:

PROCEDURE string_opp(input_string IN varchar2,output_string OUT varchar2)

现在的问题是如何执行这个存储过程并检索输出参数。我在 sql developer 中遵循了:

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

当我尝试这个时,我没有得到任何东西,有人可以帮助我吗?

4

2 回答 2

8

只是几个问题:

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

于 2013-02-01T15:37:18.820 回答
2

让我们说:

如果您有带有输出参数的存储过程:

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;
于 2013-02-02T15:22:34.123 回答