挑战在于存储过程将二进制值组装成 blob,然后保存表。问题是存储过程将 blob 作为文本使用,例如,如果我想插入 blob 字节 4,则插入字节 52(对于字节 ASCII 数字 4)。
我尝试了不同的演员阵容,但没有任何效果。如果存储过程将 blob 更新到表中,这是函数的一个参数,所以它工作正常。
如何在存储过程中使用二进制值(全字节)?
CREATE PROCEDURE PROC__TESTBLOB (
INID Integer,
INDATABLOB Blob sub_type 0 )
RETURNS (
RESULT Varchar(20) )
AS
DECLARE VARIABLE VAR_BLOB blob sub_type 0;
BEGIN
BEGIN
BEGIN
--update tab_test set datablob = :INDATABLOB where id = :INID; --This work fine
VAR_BLOB = CAST(4 AS BLOB(0));--not work, blob is still byte 52 (ascii number 4)
VAR_BLOB = 3;--not work, blob is still byte 51 (ascii number 3)
update tab_test set datablob = :VAR_BLOB where id = :INID;--This does not work
RESULT = 'OK';
END
WHEN ANY DO RESULT = 'ERR';
END
SUSPEND;
END^
更新 Firebird 版本 3.0.0.32483 64 位