はい、これは既知の問題です。
PL / pgSQL(SQL
を除いて、他の関数と同様) )はPostgreSQLの「ブラックボックス」であるため、実行時以外はエラーを検出することは実際には不可能です。
あなたはいくつかのことをすることができます:
-
SQL
を呼び出す関数をラップしますBEGIN
へのクエリ /COMMIT
エラーをより適切に制御するためのステートメント。 -
EXCEPTION
ブロック エラーをキャッチして追跡するためにコードに追加します。ただし、これは関数のパフォーマンスに影響することに注意してください。 -
plpgsql_check
を使用します 拡張機能 、PL/pgSQL開発の主要な貢献者の1人であるPavelStěhuleによって開発されました。最終的にこの拡張機能がPostgreSQLのコアになると思いますが、しばらく時間がかかります(現在、9.4beta3状態になっています)。 - 次の関連する質問も調べることができます:クエリを実行せずにpostgresql構文チェック
そして、あなたはユニットテストフレームワークを大いに必要としているように見えます。