我正在使用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格式。
答案 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;