質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

2回答

7415閲覧

Oracle sqplusでバッチ処理していたSQLファイル・コードをpsqlへ移行したい

y_ato

総合スコア14

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2018/07/03 07:48

編集2018/07/03 08:55

OracleからPostgreSQLへ移行を行っているのですが、
Oracleのsqlplusでバッチ処理していたSQLファイル・コードをpsqlへ移行したいです。

環境:PostgreSQL 9.5.3、Windows 10

以下のようなOracleコードがあるのですが、psqlでsqlファイル実行後、
sql実行エラーを取得するには、下記参考サイトのように環境変数へ
取り込む他に、
https://okwave.jp/qa/q6388821.html

psqlの実行結果をBATのerrorlevelとして設定・取得する方法はありますか?

■TEST.BAT
ECHO 処理実行

PSQL.EXE -h hostanme -p port -d dbname -U Administrator -f INSERT.sql

if errorlevel 1 (goto ERROR_END)

REM 終了処理
:NORMAL_END
echo 処理が正常に完了しました。
exit /B 0

:ERROR_END
echo 処理が失敗しました。
exit /B 1

■INSERT.SQL
WHENEVER SQLERROR EXIT 1 ROLLBACK
WHENEVER OSERROR EXIT 2 ROLLBACK

INSERT T_TEST (SELECT * FROM M_TEST);
COMMIT;

QUIT;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2018/07/03 08:50

環境変数ではなくてどうしたいの?
y_ato

2018/07/03 08:55

psqlの実行結果をBATのerrorlevelとして設定・取得する方法はありますか?
guest

回答2

0

ベストアンサー

以下参考。
クエリ結果をpsqlの変数やシェルの環境変数に格納

どのみち、スクリプトは変更しないと駄目なんでしょうから、いっそのことストアド+VBSとかに変更した方が、出来ないことで悩まなくて済むような気がします。

投稿2018/07/03 13:35

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

psqlの構文にあうように編集しました。

■INSERT.SQL

\pset pager off
\set ON_ERROR_STOP
\set AUTOCOMMIT off

BEGIN;
INSERT T_TEST (SELECT * FROM M_TEST);
COMMIT;

\quit

投稿2018/07/04 04:47

y_ato

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問