6

请告诉我 PL/SQL 中的 IN、OUT、IN OUT 参数有什么区别。以及如何使用 PL/SQL 过程返回多个值。

4

1 回答 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 回答