使用大字符串更新 Oracle CLOB 列

Update oracle CLOB column with large string

我有一个包含几列的 table systesttab。其中一列是 CLOB 类型,它应该包含一串 base64 编码图像。

CREATE TABLE systesttab(
    ...
    f_picture     CLOB       DEFAULT ' ' NOT NULL,
    ...
)

然而,当我尝试用一​​个大的 base64 字符串(超过 100k 个字符)更新 table 时,它失败了并且我的 python 应用程序崩溃了(即使在尝试时......除了块)。

UPDATE systesttab SET f_picture = 'data:image/png;base64,iVBORw0KGgoASU ...'

我什至尝试将值转换为 clob:

UPDATE systesttab SET f_picture = TO_CLOB('data:image/png;base64,iVBORw0KGgoASU ...')

但我得到的只是这个错误:

Input string too long, limit 8192

现在,我猜这是想告诉我一些关于块大小的信息,但它对我并没有真正的帮助。

如何用一条语句更新 table?

我是否必须以不同方式声明 table 的创建语句?

如果有办法在单个语句中完成此操作,那么在同一 table.

上更新多个列时它也应该可以工作

环境:python 3.4 & pyodbc

我已经使用 SQL 绑定解决了这个问题。看来字数限制不适用了。

在 python 中,语句现在如下所示:

pic = 'data:image/png;base64,iVBORw0KGgoASU ...'
sql = "UPDATE systesttab SET f_picture = ?"
cursor.execute( sql, [pic] )

这在同时更新多个字段时也能正常工作。