0

たとえば、何かを返すpgplsql 関数 (例buyItem: 購入したアイテムのパラメーター) があるとします。場合によっては、何かがうまくいかなかったことを示して、結果が空であることを示したい場合があります (たとえば、目的のアイテムを購入するのに十分なお金がないなど)。これは単なる通常の結果であり、私はそれを例外とは呼びません (そして、db サーバーでそれに関するエラーを出力することは絶対にありませんraise exception)。

問題は、そのようなケースを処理するためのベスト プラクティスは何かということです。

4

1 に答える 1

1

2 つのオプションは、例外を発生させるか、成功とエラーの両方の情報を含むレコードを返すことです。

CREATE OR REPLACE FUNCTION buyItem(itemId integer)
RETURNS RECORD
AS $$
DECLARE 
  result RECORD;
BEGIN
  IF itemId > 0 THEN
    SELECT 'purchase successful', NULL INTO result;
  ELSE
    SELECT NULL, 'purchase failed' INTO INTO result;
  END IF;
  RETURN result;
END;
$$ LANGUAGE plpgsql;

レコードを返す例は他にもあります: Return multiple fields as a record in PostgreSQL with PL/pgSQL

于 2015-04-30T16:19:02.837 に答える