我尝试使用Delphi - RAD Studio X5进行firebird数据库管理,但每次执行此命令时都会遇到问题:
update ESTOQUE set QTD='700' where CODIGO='1'
我收到了这条消息:
"[FireDAC][Phys][FB]invalid request BLR at offset 241 function HASHMD5 is not defined unkown error 335544932"
当我运行查询命令(select * from ESTOQUE
)时,它完美运行。
我的火鸟版本是2.5
我的Windows是8.1和Windows 10(两者都有问题)
我在数据库函数中有以下定义: " 宣布外部功能HASHMD5 CSTRING(32767)字符集WIN1252 返回CSTRING(255)字符集WIN1252 ENTRY_POINT' RetornarHashMD5' MODULE_NAME' mylibrary_udf&#39 ;; "
既没有数据库也没有使用FlameRobin,也没有delphi应用程序无法读取mylibrary_udf.dll。我怎么能这样做?
答案 0 :(得分:4)
错误消息表明您的数据库已调用UDF
HASHMD5
已定义(并在存储过程中使用,触发或计算 字段),但Firebird无法访问UDF库。
请参阅此答案:Invalid request BLR at offset 258 , function HASHMD5 is not defined?
表ESTOQUE
中可能有一个计算字段或触发BEFORE / AFTER UPDATE,它使用一个名为HASHMD5的UDF来计算哈希值。
答案 1 :(得分:0)
错误
无效请求BLR
最常发生在存储过程/触发器不一致时。在您的情况下,问题可能是绑定到更新表的触发器(因此错误仅在您更新时发生,但在您选择时不会发生)。因此检查表Estoque并在更新之前/之后检查触发器,如果有存储过程检查它具有正确的数量/顺序/类型的参数(例如,触发器调用存储过程有5个参数,但她有实际7参数)