我想创建固定文件长度为64000,但它会抛出错误消息,如
参数RCDLEN的数值无效
答案 0 :(得分:4)
只是一个简单的溢出。来自doc:
可以为记录长度指定1到32766字节的值。
64 000大于32766,这就是你得到错误
的原因答案 1 :(得分:1)
CRTPF FILE(QTEMP/MYFILE) RCDLEN(64000)
无效,因为你发现了。正如Thomas所说,RCDLEN的最大值是32766.
CRTPF FILE(QTEMP/MYFILE) RCDLEN(32766)
但请注意,32766限制不是来自命令本身;而32766是DB中字符列的最大长度。如果您阅读了CRTPF命令的帮助,您会发现:
指定物理中存储的记录的长度(以字节为单位) 文件。如果指定了RCDLEN和FILETYPE(* DATA),则为物理 使用只有一个字段的记录格式创建文件。
所以你可以使用SQL创建完全相同的文件
create table myfile (
myfile char(32766) for bit data
) rcdfmt myfile
但同样,32766是DB2 for i中字符列的最大大小。
然而,SQL的使用开辟了其他可能性。在您的情况下,BLOB列。
create table myfile (
myfile blob(64000)
) rcdfmt myfile
BLOB直接等同于FOR BIT DATA。如果处理字符数据,CLOB将是更好的选择。
所以你去了,一个固定记录长度为64000的文件。至少,有点像。事实是,LOB列存储在溢出空间对象中,而不是表的主数据区域。
为什么你想要这个或你希望如何能够使用它是另一回事。
您只能使用SQL操作访问LOB对象。