2016-10-06 6 views
1

私はsybaseストアドプロシージャを持っており、Postgres 9.5でそれを移動していますが、その一部を動作させることができません。 Sybaseので を:手順でif節は最後に以下のように0を返したことがありPostgresql関数の戻りステータスの使用

if @param = true begin 
select col1, col2 
from table 
where <condition> 
return 0 
end 

にはどうすればplpgsqlが言語を使用してPostgresの機能に戻りステータスを使用できますか?

助けてください。

答えて

1

PostgreSQLの機能には、返品ステータスがありません。どの関数もデータを返す必要があり、例外を発生させる必要があります。返品ステータスは必要ありません。 plpgsqlのプログラミングは、OracleのPL/SQLまたはIBMのDB2に似ています。物事の多くは異なっているので、良いスタートがマニュアルを読んでいる - - Sybaseは、T-SQLは非常に遠くplpgsqlがからであるhttps://www.postgresql.org/docs/current/static/plpgsql.html

plpgsqlがでコード:

CREATE OR REPLACE FUNCTION foo(param boolean) 
RETURNS SETOF tablename AS $$ 
BEGIN 
    IF param THEN 
    RETURN QUERY SELECT * FROM tablename 
     WHERE .. 
    ELSE 
    RAISE EXCEPTION 'xxxx'; 
    END IF; 
END; 
$$ LANGUAGE plpgsql; 

も例外 - それは類推の戻り状態ではありません0、例外 - いくつかの非ゼロの戻り状況。

+0

ありがとうございます。私はRAISE EXCEPTIONを考えていましたが、確信が持てませんでした。私が持っているもののために働く。 – MisterM