函数返回记录类型还是什么都不返回?

时间:2017-05-04 04:28:39

标签: postgresql

我写了一个函数如下。

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行。

我不想在此列中返回空记录。 任何人都可以帮助我从中恢复。

1 个答案:

答案 0 :(得分:0)

https://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-STATEMENTS-RETURNING

  

如果声明函数返回void,则可以使用RETURN语句   用于提前退出功能;但不要写一个表达式   在RETURN之后。

https://www.postgresql.org/docs/current/static/sql-createfunction.html

  

rettype

     

返回数据类型(可选择模式限定)。回报   type可以是base,composite或domain类型,也可以引用   表列的类型。它取决于实现语言   也可能被允许指定"假型"比如cstring。如果   函数不应返回值,指定void 作为返回值   类型。

(强调我的)

如果您声明return void,则无法返回set of或任何其他回复。你也不能指定参数。所以你要么返回一些带有功能的东西,要么就什它不受功能体的控制。