これはSQLServerのストアドプロシージャにあります。
if not exists
(my select statement)
insert T
(a, b, c)
values
(v_a, v_b, v_c) -- arguments passed to the function
select a,b,c from T where...; -- return the row to the client after inserting it
postgreSQLにはそのif exists ( {select-statement} )
構成に対応するものがありますか?plpgsqlコンパイラは最初、「THEN」が欠落していると言っていましたが、if ... then
構文を修正すると次のようになります。
create function foo(v_a int, v_b int, v_c int)
returns TABLE (a int, b int, c int)
as $body$
begin
if not exists
(select id from T where ...) then
insert into T
(a, b, c)
values
(v_a, v_b, v_c);
return QUERY
select a,b,c from T where ... ;
end
$body$
LANGUAGE 'plpgsql'
コンパイルは次のように終了します。
ERROR: syntax error at end of input
LINE 52: $body$ LANGUAGE 'plpgsql'
.........^
そのため、アップストリームでエラーが発生していると思いますが、表示されません。