0

IBM DB2 i を使用して、テーブルが存在しない場合にファイルに移動し、そのファイルに記述された create ステートメントと insert ステートメントで開始するプロシージャを作成したいと考えています。ステートメントが多すぎるため、すべてのステートメントをプロシージャー内に入れることはできません

これまでの私の半疑似コードは

 CREATE PROCEDURE KLEMENTEST.create_table 
()
LANGUAGE SQL
begin atomic

 if (not exists(select 'A' from syscat.tables where tabschema = 'TESTSCHEMA' and tabname='TESTTABLE')) then

 --- run queries from file located in "c:\path\to\file.txt"

 end if
end ;

助言がありますか ??

ありがとうございました

4

1 に答える 1

1

いくつかのオプションがあります:

1) 必要なコマンドを実行する Java または C で外部ストアド プロシージャを作成します。例えば

db2 -tf ファイル.sql

プロファイル (.db2profile) を使用して DB2 を実行することを忘れないでください。テーブルが存在しないことをテストした後、このストアド プロシージャを呼び出します。

2) ストアド プロシージャを作成し、ddl を含むファイルの内容を読み取り、その内容を使用して動的 SQL を作成します。UTL_FILE モジュールを介してファイルを読み取ることができます。ただし、このモジュールは Express-C エディションでは使用できません。http://publib.boulder.ibm.com/infocenter/db2luw/v10r1/topic/com.ibm.db2.luw.apdv.sqlpl.doc/doc/r0053689.html

このアプローチの一般的な問題は、ファイル システムで「実行」するファイルの場所であり、ストアド プロシージャもプラットフォームに依存します。

于 2013-07-18T15:34:24.267 に答える