【问题标题】:Creating a temporary table in informix 4gl using prepare statement使用 prepare 语句在 informix 4gl 中创建临时表
【发布时间】:2018-07-27 16:54:09
【问题描述】:

我一直在尝试创建一个函数来加载一些文件,根据现有表将它们插入到临时表中,然后验证加载的文件上没有重复的行,然后将它们插入到数据库中的适当表中,尝试使用这样的东西:

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

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

有什么建议吗?

先谢谢大家

【问题讨论】:

    标签: informix 4gl


    【解决方案1】:

    如果您准备并执行如图所示的语句,它将在您当时使用的连接上创建。如果你不搞乱连接(CONNECT、DISCONNECT、SET CONNECTION),那么它应该是干净的——如果语句有效的话。您是否正在检查错误(也许是错误停止时)?或者您是否显示了statement 以确保 SQL 符合预期(例如,没有意外地截断字符串 - 这可能解释了表似乎丢失的原因)。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      相关资源
      最近更新 更多