来自过程运行文件的db2

时间:2013-07-18 13:26:42

标签: stored-procedures db2

使用IBM DB2我想创建一个过程,在不存在表的情况下转到文件并以在该文件中写入的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 ;

任何建议??

谢谢

1 个答案:

答案 0 :(得分:1)

有几个选项

1)创建将执行所需命令的外部Java或C存储过程。例如

  

db2 -tf file.sql

请记住使用配置文件执行DB2(.db2profile)在测试该表不存在之后,您将调用此存储过程。

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

这种方法的一般问题是文件在文件系统中“执行”的位置,而且存储过程也依赖于平台。