1.我在C#里用update tableName set image=byte[](类型) where imagename='0001'
更新不了. 为什么??更新有什么条件吗?
   2.我又用存储过程
     create or replace procedure updateclob
     (
        v_tablename  in varchar2,      --表名
        v_imagename     in varchar2,   --图片名(主键)  
        v_image  in blob,              --图片
      )
    is
    lobloc  blob; 
    query_str  varchar2(1000);
begin
   
   query_str :='select image from '||v_tablename||' where imagename= :id ';
   EXECUTE IMMEDIATE query_str INTO lobloc USING v_imagename;
   
   dbms_lob.write(lobloc,DBMS_lob.Getlength(lobloc),1,lobloc);
 
   commit;
end;     错误提示:
     ORA-06502:PL/SQL:发生数值错误
     ORA-06512:""
     ORA-06512:13行     请指点!

解决方案 »

  1.   

    在查询要写入的lob的位置的语句后添加for update锁定该位置。还有v_image你没有使用。
    query_str :='select image from '||v_tablename||' where imagename= :id for update';
    EXECUTE IMMEDIATE query_str INTO lobloc USING v_imagename;
    dbms_lob.write(lobloc,DBMS_lob.Getlength(v_image),1,v_image);
      

  2.   

    SQL> create or replace procedure updateclob(
      2          v_tablename     in varchar2,      --表名
      3          v_imagename     in varchar2,      --图片名(主键)
      4          v_image         in blob           --图片
      5  )
      6  is
      7      lobloc  blob;
      8      query_str  varchar2(1000);
      9  begin
     10     query_str:='select image from '||v_tablename;
     11     query_str:=query_str||' where imagename= :id for update ';
     12     EXECUTE IMMEDIATE query_str INTO lobloc USING v_imagename;
     13     dbms_lob.copy(lobloc,v_image,DBMS_lob.Getlength(v_image),1,1); -- 用拷贝吧
     14     commit;
     15  end;
     16  /过程已创建。
      

  3.   

    http://www.oracle.com/technology/sample_code/tech/windows/odpnet/howto/anonyblock/index.html
    How to: Read and Write BLOB Data to a Database Table Through an Anonymous PL/SQL Block