[pgsql-jp: 40282] Re: バッチ処理でのエラー処理について

EBIHARA, Yuichiro ebi @ mercury.ne.jp
2010年 5月 28日 (金) 17:12:52 JST


こんにちは、海老原です。

psqlを実行すると環境変数ERRORLEVELにセットされます。
psqlの実行直後に、%ERRORLEVEL%の値をチェックしてみてください。
または、IF ERRORLEVEL文でもいいかもしれません。

海老原

2010年5月28日17:03 河西 昌明 <kawanishi @ plus1jp.com>:
> こんにちは、河西と申します。
>
> 現在、Windows環境でPostgreSQLを活用しているのですが、データベースの更新が
> 必要になった場合、DOSコマンドでバッチファイルを作り、更新をかけています。
>
> 外部ファイル(sample.sql)でデータベース更新用のスクリプト(SQL)を作成して、
> それを以下のようなコマンドで呼び出すようなバッチ処理になります。
>
> psql -U postgres --set ON_ERROR_STOP=on -h -e -f sample.sql sampleDB
>
>
> このような方法で、スクリプト(sample.sql)の実行中にエラーが発生した場合、
> その時点で更新処理を止めるようにしているのですが、発生したエラーを取得する
> にはどうしたら良いでしょうか? エラーコードを取得して、その状況に応じて、
> 前述のコマンド以降の処理を、分岐できればと考えています。
>
> ネットで検索したところ、PostgreSQL7.1.3のドキュメントでしたが、以下の様な
> 記述がありました。
>
> ---------------------------------
> psqlの対話式セッションから ではなく、-f オプションを使って呼び出されていた場合、 psqlは致命的エラー条件(エラーコード1)と 区別するためにエラーコード3を返します。
> ---------------------------------
>
> この「エラーコート3」が取得できれば良いのだと思うのですが、どのようにすれ
> ば取得できるのか解りません。
>
>
> ■環境
> PostgreSQL 8.1.3
> WindowsXP SP3
>
>
>
> 以上、宜しくお願い致します。
> ---------------------------------♪
> 株式会社プラスワン 河西昌明
>


pgsql-jp メーリングリストの案内