我正在尝试将blob从一个数据库插入/更新到另一个数据库。我知道Firebird包含EXECUTE STATEMENT (on external database)。但是,如果您尝试将blob更新/更新到外部数据库,则它不起作用。
有人知道是否可以使用EXECUTE STATEMENT或任何其他建议吗?
更新1
文件大约是0,1MB大
{{1}}
我收到的错误:
“发生了算术溢出或除零。 算术异常,数字溢出或字符串截断。 转换为字符串时的blob截断:超出了长度限制。“
答案 0 :(得分:2)
改用参数。
请参阅EXECUTE STATEMENT with Dynamic Parameters
喜欢:
EXECUTE STATEMENT('INSERT INTO wsattachment(id, filecontent) VALUES(:p1, :p2)')
(p1 := new.id, p2 := new.filecontent)
on external 'myDB.FDB'
as user 'SYSDBA' password 'pw';
答案 1 :(得分:2)
Firebird 2.5的某些早期版本存在blob问题,例如在某些情况下,处理的blob有VARCHAR(30)
。我无法轻易确定您遇到的确切问题,但升级到较新版本可以解决此问题(正如您已在评论中确认的那样)。
在撰写本文时,Firebird 2.5.6是最新版本,预计很快就会推出2.5.7。