2017-01-20 85 views
0

X行または0行のいずれかを返す関数を作成しようとしています。PostgreSQL:制御がRETURNなしで終了しました

これは私のコードです:

... 
    IF var != '' THEN 
     RETURN var; 
    ELSE 
     RETURN NULL; 
    END IF; 
END; 
$$ 
LANGUAGE 'plpgsql'; 

私が行う場合:

... 
    IF var != '' THEN 
     RETURN var; 
    ELSE 
     RETURN; 
    END IF; 
END; 
$$ 
LANGUAGE 'plpgsql'; 

私はエラーを取得する:

ERROR: missing expression at or near ";" 
LINE 19: RETURN; 
+0

返されますか? –

+0

それはテキストを返します:RETURNS text AS $$ –

+0

完全なコードを表示してください。 –

答えて

1

あなたが定義したもの(RETURNS text)などの正常な機能常に正確に1つの値を返します。

関数がRETURNS voidと定義されていない場合は、値を返す必要があります。つまり、引数なしでRETURN;を使用することはできません。

異なる行数(0または1より大きい数値)を返す場合は、を返すセットが必要です。

このような機能はRETURNS SETOF text(またはいくつかの他のタイプ)として宣言され、関数内からは、実行を終了するために、引数なしで関数出力とRETURN;に行を追加するRETURN NEXT val;を使用します。

このような関数は、クエリのテーブルのように使用できます。

+0

ありがとうAS、それは問題を解決し \t RETURNSテキストをCREATE OR REPLACEない –

関連する問題