使用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 ;
任何建议??
谢谢
答案 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
这种方法的一般问题是文件在文件系统中“执行”的位置,而且存储过程也依赖于平台。