请告诉我 PL/SQL 中的 IN、OUT、IN OUT 参数有什么区别。以及如何使用 PL/SQL 过程返回多个值。
问问题
25390 次
1 回答
7
什么是 IN/OUT/INOUT 参数?
这些是您定义为函数参数列表的一部分的参数,它们作为结果的一部分返回。创建函数时,未显式指定的参数默认为 IN 参数(这意味着它们被传入而不返回),这就是为什么您有时会在使用函数向导时看到 PgAdmin 执行类似于 IN somevariable variabletype 之类的操作。
你也可以有 INOUT 参数,它们是函数输入,既可以传入,也可以由函数修改,也可以返回。
SQL OUTPUT 参数 - 返回多条记录
--SQL returning multiple records
CREATE OR REPLACE FUNCTION fn_sqltestmulti(param_subject varchar,
OUT test_id integer, OUT test_stuff text) RETURNS SETOF record
AS $$
SELECT test_id, test_stuff
FROM testtable where test_stuff LIKE $1;
$$
LANGUAGE 'sql' VOLATILE;
--example
SELECT * FROM fn_sqltestmulti('%stuff%');
--OUTPUT--
test_id | test_stuff
---------+--------------------
1 | this is more stuff
2 | this is new stuff
更多示例
于 2012-07-24T03:28:07.020 回答