0

これは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'
       .........^

そのため、アップストリームでエラーが発生していると思いますが、表示されません。

4

1 に答える 1

0

あなたのIF条項は不完全です。END IF対応するステートメントで閉じる必要があります。

条件に関するドキュメントを確認してください。

于 2013-01-27T15:29:13.670 に答える