Firebird sql update命令在delphi中不起作用

时间:2015-12-30 05:51:30

标签: sql delphi firebird

我尝试使用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。我怎么能这样做?

2 个答案:

答案 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参数)