2013-07-18 19 views
0

使用IBM DB2我想創建一個過程,以防萬一表不存在到文件並開始創建並插入寫入該文件中的語句。我不能把所有語句的過程中,因爲有太多的人過程運行文件中的db2

我半僞代碼到目前爲止是

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 ; 

什麼建議?

謝謝

+0

DB2的哪個版本和平臺? – mustaccio

+0

在windows 7上db2 express C – Yebach

+0

在這種情況下,@AngocC早些時候給出的建議適用。不過,我認爲你做這件事比你應該做得更復雜。從操作系統提示符運行腳本有什麼問題? – mustaccio

回答

1

有幾個選項

1)創建外部Java或C存儲過程,將執行所需的命令。例如

DB2 -tf file.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

這種方法的普遍問題是在文件系統中,以「執行」文件的位置,並存儲過程變得依賴於平臺。