我写了一个函数如下。
Create function tmp (in text, in text)
returns setof record as $$
Declare rec record;
Begin
If $1 is not null and $2 is null then
Select * into rec from test_tble where tmprec = $1;
Elsif $1 is not null and $2 is not null then
Insert into test_tble values ($1,$2);
End if;
Return;
End; $$ language plpgsql;
我的问题是第二个条件。 第一个条件很好.. 当第二个条件成立时。我插入记录但最后返回如下
$ 1 | $ 2
++++++
返回0行。
我不想在此列中返回空记录。 任何人都可以帮助我从中恢复。
答案 0 :(得分:0)
如果声明函数返回void,则可以使用RETURN语句 用于提前退出功能;但不要写一个表达式 在RETURN之后。
https://www.postgresql.org/docs/current/static/sql-createfunction.html
rettype
返回数据类型(可选择模式限定)。回报 type可以是base,composite或domain类型,也可以引用 表列的类型。它取决于实现语言 也可能被允许指定"假型"比如cstring。如果 函数不应返回值,指定void 作为返回值 类型。
(强调我的)
如果您声明return void
,则无法返回set of
或任何其他回复。你也不能指定参数。所以你要么返回一些带有功能的东西,要么就什它不受功能体的控制。