Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php pdo在oracle中插入blob_Php_Oracle_Pdo_Oracle11g - Fatal编程技术网

使用php pdo在oracle中插入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的长度时,将数据

我必须在oracle视图中插入blob。在这种情况下,没有机会将此空的_BLOB()与returning子句一起使用。这样地: 在表(a,b,c)中插入值(a,b,EMPTY_BLOB()),将c返回到:photo 因为在视图中检索不起作用 在插入数据之前,我需要一种创建空blob的方法,但我不知道如何使用PDO来创建空blob


谢谢

在连接到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
之间的区别……您是否尝试过插入到基础表中?