请告诉我PL / SQL中IN,OUT,IN OUT参数之间有什么区别。以及如何使用PL / SQL过程返回多个值。
答案 0 :(得分:6)
这些是您定义为函数参数列表的一部分的参数,它们作为结果的一部分返回。当您创建函数时,如果未明确指定参数(这意味着它们被传入而未返回),则参数默认为IN参数。这就是为什么当您使用函数向导时,有时会看到PgAdmin执行类似于某些变量类型的操作。
你也可以拥有INOUT参数,它们都是传入的函数输入,可以被函数修改并返回。
--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