問題
特定のソフトウェアリリースを構成する多数の基礎となるSQLスクリプトを実行するために使用されるDBA提供のラッパースクリプトがあります。
ラッパースクリプトは、実行される内容に関するデバッグ情報を出力し、次のsqlplusコマンドを使用して、続行するかどうかをユーザーに確認します。
ACCEPT DB_OK PROMPT "Do you wish to Continue Y/[N]? : " DEFAULT N
Mavenを使用してビルドでデータベースの作成を自動化しようとしています...ビルドはユーザー入力を待ってハングします:-(
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>sqlplus</executable>
<arguments>
<argument>${db.user}/${db.password}@${db.service.name}</argument>
<argument>@${project.build.directory}/test-resources/create-db.sql</argument>
</arguments>
<workingDirectory>${project.build.directory}/test-resources</workingDirectory>
</configuration>
</execution>
</executions>
</plugin>
試みられた解決策
ACCEPT呼び出しをplsqlIF/ ELSEブロックでラップしようとしましたが、これにより「ACCEPT」に関するエラーが発生し、構文が正しくなくなります。これは、plsqlコマンドとsqlplusコマンドを混在させているためだと思います。
質問
それで、従来の置換変数のSET DEFINE OFFに似たsqlplusのACCEPTプロンプトを無効にする方法を知っている人はいますか?
ラッパースクリプトに小さな変更を加えることはできますが、一括リファクタリングを行うと、DBAはおそらく文句を言うでしょう。
ありがとう。