2012-07-25 116 views
2

我有一个4GL模块在以下代码:如何在Informix 4gl中引用TEXT类型?

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数据类型。

回答

2

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

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

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

+0

感谢您的指针,它现在的作品。基本上,在赋值语句中不可能使用TEXT数据类型字段。我使用了一条SELECT语句来加载变量f_input.long_desc。当我完成时,我还必须使用LOCATE f_input.long_desc IN MEMORY,然后使用FREE f_input.long_desc。这个例子非常有用。 – 2012-07-26 10:13:19