使用prepare语句在notifyix 4gl中创建一个临时表

时间:2018-07-27 16:54:10

标签: informix 4gl

我一直试图创建一个函数来加载一些文件,然后将它们插入到基于现有表的临时表中,然后验证加载的文件上没有重复的行,然后将其插入数据库中的正确表中,尝试使用以下方式:

let statement = " select * from ", vtable clipped, " where 1=0 into temp t_",vtable clipped
prepare pstatement from  statement 
execute pstatement

无济于事,因为临时表似乎是在与工作人员不在的会话上创建的。

有什么建议吗?

谢谢大家

1 个答案:

答案 0 :(得分:1)

如果您准备并执行如图所示的语句,则会在您当时使用的连接上创建该语句。如果您不弄乱连接(CONNECT,DISCONNECT,SET CONNECTION),则应该全部干净—如果该语句完全起作用。您是否正在检查错误(也许何时停止错误)?或者您是否显示statement以确保SQL符合预期(例如,不进行字符串的令人讨厌的砍切-可以解释为什么表似乎丢失了)。

请记住,临时表是会话专用的。如果在I4GL程序中运行LOAD语句,应该没有问题,但是不能将单独的加载器程序与临时表一起使用。就数据库而言,即使您在创建数据库后立即将其删除,它也必须是“永久”或“常规”表。

您还可以准备一个显式的CREATE TEMP TABLE语句来创建表。

还要考虑使用外部表是否对加载有帮助。还有一些违规表,可以在直接加载到主表时捕获有问题的行。