2015-12-30 61 views
2

我試圖用Delphi做一個Firebird數據庫管理工作 - RAD Studio的X5,但每次我有一個問題,我執行以下命令:火鳥SQL UPDATE命令而不是在德爾福

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 RETURNS CSTRING(255)字符集WIN1252 入口點 'RetornarHashMD5' MODULE_NAME 'mylibrary_udf'; 「

既不是數據庫adm FlameRobin也不是delphi應用程序不能讀取mylibrary_udf.dll。我怎麼能做到這一點?

+1

你真的在你的Firebird服務器的udf文件夾中有這個'mylibrary_udf.dll'嗎?它是一個32位或64位的庫,是你的Firebird安裝32位或64位? –

+0

我解決了它,問題是firebird版本....和mylibrary_udh.dll進入firebird udf文件夾.... 謝謝.... –

+0

是的,mylibrary_udf進入firebird udf文件夾....問題是firebird版本....我使用的版本是2.5,正確的版本是2.0,它解決了問題 –

回答

4

The error message indicates that your database has a UDF called HASHMD5 defined (and used in a stored procedure, trigger or computed field), but the UDF library is not accessible to Firebird.

看到這個答案:Invalid request BLR at offset 258 , function HASHMD5 is not defined?

可能在表ESTOQUE已а計算字段或觸發前/一個使用UDF稱爲HASHMD5來計算散列值更新後。

+1

如果這個答案是正確的(我認爲是這樣)通過數據庫查詢工具,即在Delphi代碼之外運行更新命令,應該會產生相同的錯誤。 –

+0

@HughJones不一定,也許該工具使用Firebird嵌入式和應用程序Firebird服務器(反之亦然)。或者一臺連接到64位Firebird,另一臺連接到同一臺服務器上的32位Firebird。一個有UD​​F,另一個沒有(或者它是錯誤的位)等等。 –

+0

@MarkRotteveel - 當然,我的意思是連接到同一臺服務器。 UDF安裝在服務器上 - 對嗎? (或者我忘了它是如何工作的?) –

0

錯誤

invalid request BLR

最常發生在存儲過程時/觸發矛盾。在你的情況下,問題可能是綁定到更新表的觸發器(因此,只有當你更新時纔會發生錯誤,而不是在你選擇時發生)。所以檢查表Estoque和更新前/檢查觸發器,如果​​有一個存儲過程檢查它有正確的數量/順序/類型的參數(例如,觸發器調用存儲過程5參數,但她有7參數)

+0

錯誤代碼335544932表示「無法找到模塊名稱或入口點」,這意味着無法加載必要的UDF庫。 –

+0

感謝您的信息。所以我必須刪除我的答案? 其他人可能對無效請求BLR有問題,並且可能與UDF功能無關。 – Majkl

+0

我認爲這是您的選擇;即使它沒有回答這個具體問題,對其他「無效請求BLR」的人也可能確實有所幫助。 –