Informix将varchar转换为字节

问题描述 投票:1回答:1

如何将varchar插入byte(blob)列?

考虑到我有一个带有字节(blob)列'名称'的表A。

插入A(名称)值('abc');引发错误为“ 617:必须在此上下文中提供Blob数据类型。”

需要知道在oracle中是否有与下面的语句等效的informix?utl_raw.cast_to_raw('abc')

casting byte blob informix varchar
1个回答
0
投票

您可能会问两种非常不同的类型-BYTE和BLOB。但是,我看到的关于错误-617的正式消息是:

$ finderr -617
-617    A TEXT or BYTE data type must be supplied within this context.

This statement assigns a value that is not a simple large object to a BYTE or
TEXT column or assigns a BYTE or TEXT column to a column that is not a simple
large object. Neither action is supported. BYTE and TEXT values must be
assigned as whole units to columns of the same type. Check that the statement
specifies the columns that you intended.

$

这表明您使用的是旧的“经典Blob”类型-BYTE。 (也有文本大对象。较早的类型是TEXT,而较新的类型是CLOB,字符大对象。)

当前没有将VARCHAR字符串转换为BYTE(或TEXT)的内置方法。自从大约在1990年引入BYTE和TEXT类型以来,这一直很痛苦。您没有任何迹象表明您使用的是Informix ESQL / C,ODBC驱动程序,JDBC驱动程序还是其他某种机制。如果使用ESQL / C,则必须创建一个“定位器结构”(loc_t中的locator.h),该结构使用blob的字符串表示形式-与将blob数据存储在文件中的各种方式相反。 (我希望您不在AIX上,因为AIX上的系统提供的loc_t存在问题。它很容易解决,但是这样做很麻烦。)

我还没尝试过用ODBC编码,也不知道如何用JDBC编码,因此我无法对此加以归类。

我不太确定BLOB的“智能斑点”类型;可能有一个将字符串转换为BLOB(或CLOB)类型的函数。

© www.soinside.com 2019 - 2024. All rights reserved.