使用php pdo在oracle中插入blob
我必须在oracle视图中插入blob。在这种情况下,没有机会将此空的_BLOB()与returning子句一起使用。这样地: 在表(a,b,c)中插入值(a,b,EMPTY_BLOB()),将c返回到:photo 因为在视图中检索不起作用 在插入数据之前,我需要一种创建空blob的方法,但我不知道如何使用PDO来创建空blob使用php pdo在oracle中插入blob,php,oracle,pdo,oracle11g,Php,Oracle,Pdo,Oracle11g,我必须在oracle视图中插入blob。在这种情况下,没有机会将此空的_BLOB()与returning子句一起使用。这样地: 在表(a,b,c)中插入值(a,b,EMPTY_BLOB()),将c返回到:photo 因为在视图中检索不起作用 在插入数据之前,我需要一种创建空blob的方法,但我不知道如何使用PDO来创建空blob 谢谢 在连接到oradb的PHP中,我最近解决了一个插入CLOB的问题,应该以同样的方式处理这个问题 在我的例子中,当绑定时,将字符的长度设置为bind的长度时,将数据
谢谢 在连接到oradb的PHP中,我最近解决了一个插入
CLOB
的问题,应该以同样的方式处理这个问题
在我的例子中,当绑定时,将字符的长度设置为bind的长度时,将数据作为字符插入就足够了。但是您可以尝试使用函数来创建BLOB()
,该函数需要将输入转换为原始值:
插入my_blob_表(my_blob_列)值(TO_blob(UTL_RAW.CAST_TO_RAW('一些二进制数据作为字符串'))
或者一个通用的TO_LOB()
应该可以工作(根据源/目标列转换为CLOB
或BLOB
):
插入my_blob_表(my_blob_列)值(TO_LOB('some binary data as string'))
编辑:使用谷歌,我发现这些应该可以工作:
- 如果我们有一个
long
列要转换为clob/blob
:
创建表t1(id int,my_blob blob);
创建表t2(id int,my_long);
插入t2值(1,rpad('*',4000'*');
在t1中插入select id,从t2插入_lob(我的_long);
- 如果我们有一个
long raw
列要转换为blob
:
创建表t1(id int,my_blob blob);
创建表t2(id int,my_long_raw);
插入t2值(1,rpad('*',4000'*');
插入t1 select id,从t2插入到\u blob(我的\u long\u raw);
那应该有用。。。看看吧。看来我不能用你的解决方案。因为我的列很长,所以我只能绑定要插入其中的PDO::PARAM_LOB数据类型,但长数据不能使用cast_转换为_raw:(然后在不强制转换的情况下尝试相同的操作。如果您有LONG
类型的数据,那么使用to_BLOB
或to_LOB
将LONG
强制转换为BLOB
应该没有问题。奇怪,但它也不起作用。我有一个错误:ORA-01461:可以绑定一个长值,仅用于插入长列HMM,为什么不能您将LONG
列转换为BLOB
列?LONG
有点过时了……或者至少将LONG
转换为LONG-RAW
,然后调用to\u BLOB(您的\u-LONG\u原始数据)
。想不出更好的方法…@Maxim我添加了一些应该有效的示例。请注意到\u lob
和到\u blob
之间的区别……您是否尝试过插入到基础表中?