PLSQL中IN,OUT,IN OUT参数的区别

时间:2012-07-24 03:18:53

标签: oracle plsql

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

1 个答案:

答案 0 :(得分:6)

什么是IN / OUT / INOUT参数?

这些是您定义为函数参数列表的一部分的参数,它们作为结果的一部分返回。当您创建函数时,如果未明确指定参数(这意味着它们被传入而未返回),则参数默认为IN参数。这就是为什么当您使用函数向导时,有时会看到PgAdmin执行类似于某些变量类型的操作。

你也可以拥有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

MORE EXAMPLES