无法使用插入语句插入大于 3200 的 Oracle BLOB 数据
Unable to insert oracle BLOB data greater than 3200 using Insert Statement
我正在处理现有项目,需要为 Oracle 数据库准备 DML。
但是由于大于 4000 字节的巨大尺寸,我无法为 Blob 数据准备 Insert 语句。谁能帮帮我?
N.B:我收到这个错误,ORA-06550:字符串文字太长。
只有 INSERT 语句,没有 java 程序。我只需要它来准备像插入语句这样的 DML。
我的插入语句:
INSERT INTO APP_PROF('ID', 'IMAGE') VALUES('2', TO_BLOB('4654655665....'))
此图像 blob 数据大于 45000 字节
提前致谢。
是的。使用流,而不是 String/byte 数组来插入 BLOB。像这样:
PreparedStatement ps = conn.prepareStatement("insert into blobs (blob_value) values (?)");
InputStream in = new StringBufferInputStream(aLagrgeStringValue);
ps.setBinaryStream(1,in,(int)in.length());
ps.execute();
我在这里发现的问题是您正在使用字符串值插入 Blob 列,而您收到的错误是输入字符串的 限制错误 而不是table 的 blob 列。
请参考以下link进一步说明。
How to convert VARCHAR2 to BLOB inside Oracle 11g PL/SQL after ORA-06502
我正在处理现有项目,需要为 Oracle 数据库准备 DML。 但是由于大于 4000 字节的巨大尺寸,我无法为 Blob 数据准备 Insert 语句。谁能帮帮我?
N.B:我收到这个错误,ORA-06550:字符串文字太长。
只有 INSERT 语句,没有 java 程序。我只需要它来准备像插入语句这样的 DML。
我的插入语句:
INSERT INTO APP_PROF('ID', 'IMAGE') VALUES('2', TO_BLOB('4654655665....'))
此图像 blob 数据大于 45000 字节
提前致谢。
是的。使用流,而不是 String/byte 数组来插入 BLOB。像这样:
PreparedStatement ps = conn.prepareStatement("insert into blobs (blob_value) values (?)");
InputStream in = new StringBufferInputStream(aLagrgeStringValue);
ps.setBinaryStream(1,in,(int)in.length());
ps.execute();
我在这里发现的问题是您正在使用字符串值插入 Blob 列,而您收到的错误是输入字符串的 限制错误 而不是table 的 blob 列。
请参考以下link进一步说明。
How to convert VARCHAR2 to BLOB inside Oracle 11g PL/SQL after ORA-06502