0

我正在尝试找到一种在 BLOB 列上插入数据的方法。

在研究过程中,我在 IBM 网站上找到了这个示例,我不明白什么是“常规文件”。

这个例子的标题是“这个例子展示了如何将 :hv_text_file 引用的常规文件中的数据插入到 CLOB 列中”

:hv_text_file一种包含要插入到 blob 列中的文件描述的变量吗?

strcpy(hv_text_file.name, "/home/userid/dirname/filnam.1");
hv_text_file.name_length = 
strlen("/home/userid/dirname/filnam.1");
hv_text_file.file_options = SQL_FILE_READ; /* this is a ’regular’ 
file */
EXEC SQL INSERT INTO CLOBTAB
VALUES(:hv_text_file);
4

1 回答 1

0

我假设您正在查看 Db2 SQL 编程参考:IBM i 7.2 > Database > Programming > SQL programming > Processing special data types > Large objects at https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/sqlp/ rbafyexampinsertclob.htm

这是一个程序片段;它假定您已阅读并了解如何引用 LOB 列:IBM i 7.2 > Database > Reference > SQL reference > Language elements > Variables at https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/db2/rbafzreferencelob .htm

在那里,您可以看到有两种类型的 LOB 引用:1) LOB 或 XML 定位器变量 2) LOB 的 XML 文件引用变量

看起来您想通过文件引用变量将流文件移动到 BLOB 中。快速摘要在第二个链接中,但“常规文件的含义”的答案如下:

当前在根 (/)、QOpenSys 和 UDFS 文件系统中支持文件引用变量。创建文件时,会为其提供正在写入文件的数据的 CCSID。目前,不支持混合 CCSID。要使用使用文件引用变量创建的文件,该文件应以二进制模式打开。

因此,“常规文件”是指 IFS 流文件。

可能有助于说明示例的程序片段的“另一半”位于 SQL 编程参考中:IBM i 7.2 > 数据库 > 编程 > SQL 编程 > 处理特殊数据类型 > 示例:在https 中使用 UDT、UDF 和 LOB: //www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/sqlp/rbafyexplob.htm

您需要记住的关键字是“LOB 文件引用变量”。

如果您是 RPG 程序员,请在 DCL-S 语句中查找 SQLTYPE() 关键字https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzajp/rzajpirpglobfileref.htm

于 2019-02-18T02:28:12.647 回答