使用输出参数执行存储过程

时间:2015-06-09 21:46:56

标签: sql stored-procedures oracle-sqldeveloper

我正在使用SQLDEVELOPER来创建存储过程。这是我的程序

create or replace PROCEDURE SPP
(
 inpt IN VARCHAR2,
 opt OUT VARCHAR2
)
AS
BEGIN
  SELECT U_ID 
    INTO opt 
    FROM TABLE_NAME 
   WHERE U_ID=inpt;
END;

所以它应该返回opt中的值,然后我可以打印或者其他什么。 我不知道如何执行它我尝试运行此脚本

var opt VARCHAR2;

exec SPP('test_user') := opt 

但它不起作用这是我第一次做存储过程并且我真的很困惑任何帮助表示赞赏

我如何让它运行?我可以使用输入变量进行存储过程运行,但输出变量我搞砸了,我不能使用SELECT(item)INTO格式。

1 个答案:

答案 0 :(得分:0)

为了调用该过程,您需要传入一个过程可以填充的变量。像

这样的东西
DECLARE
  l_output table_name.u_id%type;
BEGIN
  spp( 'test_user', l_output );
END;

现在,就是说,声明一个存储过程,其唯一目的是查询数据库并返回值通常是错误的架构选择。这就是函数存在的原因。

CREATE OR REPLACE FUNCTION some_function( p_input IN table_name.u_id%type )
  RETURN table_name.u_id%type
IS
  l_uid table_name.u_id%type;
BEGIN
  SELECT u_id
    INTO l_uid
    FROM table_name
   WHERE u_id = p_input;

  RETURN l_uid;
END;

然后可以在PL / SQL块中调用

DECLARE
  l_output table_name.u_id%type;
BEGIN
  l_output := some_function( 'test_user' );
END;

或在SQL语句中

SELECT some_function( 'test_user' )
  FROM dual;