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

Wel*_*wan 6 oracle plsql

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

wal*_*.ar 6

什么是IN/OUT/INOUT参数?

这些是您定义为函数参数列表的一部分的参数,它们作为结果的一部分返回.当您创建函数,参数默认为IN参数没有明确规定时(这意味着它们在过去,不返回),这就是为什么你有时会看到的pgAdmin不喜欢在somevariable变量类型的东西,当你使用函数向导.

你也可以有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
Run Code Online (Sandbox Code Playgroud)

更多例子

  • 我不确定Postgres社区如何使用该术语,但SO上的标签暗示"plsql"仅适用于Oracle,"plpgsql"适用于Postgres. (5认同)