当您看到这个错误时,它与文件中键的大小无关,只是您试图读取的@ID超过255个字符。当我看到它时,通常会告诉我它发生在源代码中的哪一行。如果你把这个放在那条线之前,你应该能找到它。
IF LEN(THIS.ID) GT 255 THEN
DEBUG
END
编辑显然,这种情况下的错误是没有参考行号。我不确定这是否是为了清晰起见而省略的,或者是宇宙风味的某种差异,但我现在相信它的缺失是一种暗示,错误消息来自shell,而不是解释器。
OPEN '','VOC' TO FILE.VOC ELSE STOP "CANNOT OPEN FILE VOC"
STMT = "SELECT VAL WITH ":STR("A",256):" EQ 0"
EXECUTE STMT RTNLIST USE.LIST RETURNING DEBUGS
CRT "**************************************"
READ TEST FROM FILE.VOC,STR("A",256) ELSE NULL
END
在我的系统上输出这个。
>RUN TEST.SC TEST.LONG.ID
Attempted READ of record ID larger than file/table maximum
record ID size of 255 characters.
RetrieVe: syntax error. Unexpected sentence without filename. Token was "".
Scanned command was SELECT 'VAL' WITH 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' EQ '0'
**************************************
Program "TEST.LONG.ID": Line 5, Attempted READ of record ID larger than file/t
able maximum
record ID size of 255 characters.
>
第一条看起来像是您的错误消息,指向您正在构建的一条动态SELECT语句@ID是记录钥匙的同义词,为了进一步进行类比,你似乎正试图用一把大得滑稽的“城市钥匙”解锁你的自行车。