3
我們利用存儲在表中的二進制值作爲CHAR(18)CHARACTER SET OCTETS。寫Firebird UDF返回OCTETS
在Firebird 2.0.4中,我們使用ASCII作爲默認數據庫字符集和連接字符集。我們有一個UDF,可以生成其定義爲所需的數據:
DECLARE EXTERNAL FUNCTION CREATEBINARY
RETURNS CSTRING(76)
ENTRY_POINT 'CREATEBINARY'
MODULE_NAME 'CustomUDF';
檢索值與
SELECT CREATEBINARY() FROM RDB$DATABASE
收益的預期值。
在Firebird 2.5.2中,我們使用UTF8作爲默認數據庫字符集和連接字符集。試圖撥打我們的UDF上述select語句現在導致一個錯誤:
Context: Statement::Fetch
Message: idx_dsql_fetch failed.
SQL Message: -104
Invalid Token
Engine Code: 335544849
Engine Message:
Malformed string
我試圖修改函數聲明指定的字符集的結果爲OCTETS和NONE:
DECLARE EXTERNAL FUNCTION CREATEBINARY
RETURNS CSTRING(76) CHARACTER SET OCTETS
ENTRY_POINT 'CREATEBINARY'
MODULE_NAME 'CustomUDF';
但我仍然收到相同的錯誤結果。
我已經在FlameRobin 0.9.3.1870和我們的應用程序中使用Delphi XE2 Update 4和IBObjects 4.9 Release 14進行了測試。兩者都以相同的方式失敗。