如何在 Informix 4gl 中引用 TEXT 类型?

Posted

技术标签:

【中文标题】如何在 Informix 4gl 中引用 TEXT 类型?【英文标题】:How do I reference a TEXT type in Informix 4gl? 【发布时间】:2012-07-25 16:10:29 【问题描述】:

我在 4gl 模块中有以下代码:

DEFINE f_drec RECORD LIKE verhistd.*
DEFINE f_input
   RECORD
      long_desc LIKE verhistd.long_desc
   END RECORD
Let f_input.long_desc = f_drec.long_desc

verhistd.long_desc 是 TEXT 数据类型。但是当我编译代码时,我得到了这个错误信息:

|
|      The variable "f_input.long_desc" is too complex a type to be used in an
| assignment statement.
| See error number -4323.

-4323 的错误信息只涉及数组和屏幕记录,而不是 TEXT 数据类型。

【问题讨论】:

【参考方案1】:

我没有在我必须维护的任何 4gl 代码中使用 TEXT 数据类型,但是快速查看 IBM 4GL By Example 文档中有关 TEXT 字段的文档表明 4GL 将文本 blob 视为一种特殊情况,并且不由于潜在的内存使用,默认加载它们。

如果您查看示例 18 中的示例代码(抱歉,他们现在只有 pdf 版本的在线文档),它应该为您提供了一个相当直接的示例,说明如何处理 TEXT blob。

因为一个 BLOB 列可以包含非常大量的数据,一个 4GL 程序不会像其他变量那样为 BLOB 变量分配空间 类型。 BLOB 变量不包含实际值,而是包含 指向存储此数据的位置的指针。这个位置可以在 内存,在程序创建的临时文件中,或在指定的文件中 由程序员命名。 LOCATE 语句使用 BLOB 值的位置初始化 BLOB 变量。

【讨论】:

感谢您的指点,它现在可以工作了。基本上不可能在赋值语句中使用 TEXT 数据类型字段。我使用 SELECT 语句加载变量 f_input.long_desc。完成后,我还必须使用 LOCATE f_input.long_desc IN MEMORY 然后 FREE f_input.long_desc。这个例子非常有用。

以上是关于如何在 Informix 4gl 中引用 TEXT 类型?的主要内容,如果未能解决你的问题,请参考以下文章

在 Informix 4GL 程序中验证 URL

在 INFORMIX 4GL 的报告中对“ORDER BY”使用“IF 语句”

无法运行 Informix 4GL 交互式调试器

使用 prepare 语句在 informix 4gl 中创建临时表

Informix 4GL 向屏幕报告 - 反向

在 4GL Informix 中关闭“Wy-60”?