我一直试图创建一个函数来加载一些文件,然后将它们插入到基于现有表的临时表中,然后验证加载的文件上没有重复的行,然后将其插入数据库中的正确表中,尝试使用以下方式:
let statement = " select * from ", vtable clipped, " where 1=0 into temp t_",vtable clipped
prepare pstatement from statement
execute pstatement
无济于事,因为临时表似乎是在与工作人员不在的会话上创建的。
有什么建议吗?
谢谢大家
答案 0 :(得分:1)
如果您准备并执行如图所示的语句,则会在您当时使用的连接上创建该语句。如果您不弄乱连接(CONNECT,DISCONNECT,SET CONNECTION),则应该全部干净—如果该语句完全起作用。您是否正在检查错误(也许何时停止错误)?或者您是否显示statement
以确保SQL符合预期(例如,不进行字符串的令人讨厌的砍切-可以解释为什么表似乎丢失了)。
请记住,临时表是会话专用的。如果在I4GL程序中运行LOAD语句,应该没有问题,但是不能将单独的加载器程序与临时表一起使用。就数据库而言,即使您在创建数据库后立即将其删除,它也必须是“永久”或“常规”表。
您还可以准备一个显式的CREATE TEMP TABLE语句来创建表。
还要考虑使用外部表是否对加载有帮助。还有一些违规表,可以在直接加载到主表时捕获有问题的行。