现在要做一个存储过程,从外面传入2个值,一个ID,一个value,目的是要更新,id对应记录的A字段的一部分,比如A包含的值为
$aa.jpg$bb.jpg,value的值是$aa.jpg,最后执行SQL后能变成$bb.jpg,请高手们指点一下……

解决方案 »

  1.   

    update tablename set value = replace(id,value,'');
      

  2.   

    这个不行,必须是使用动态sql
    execute immediate 'update tablename set value = replace(id,'''||value||''','''||'''||')'
      

  3.   


    --注意拼接的SQL语句写法,尤其是单引号
    --例如:表tabname中字段A和ID都是字符型的
    execute immediate 'update tabname set a= replace(a,'''||Value||''','''') where id='''||id||'''';
      

  4.   


    SQL> create or replace procedure toss2000(id in varchar2, value in varchar2) as
      2    v_sql varchar2(200);
      3  begin
      4    v_sql := 'update test set value = replace(id,''' || value ||
      5             ''','''')';
      6    dbms_output.put_line(v_sql);
      7    execute immediate v_sql;
      8  end;
      9  /Procedure createdSQL> select * from test;ID                                                 VALUE
    -------------------------------------------------- --------------------------------------------------
    $aa.jpg$bb.jpg                                     $bb.jpgSQL> execute toss2000('$aa.jpg$bb.jpg','$bb.jpg');update test set value = replace(id,'$bb.jpg','')PL/SQL procedure successfully completedSQL> select * from test;ID                                                 VALUE
    -------------------------------------------------- --------------------------------------------------
    $aa.jpg$bb.jpg                                     $aa.jpgSQL> commit;Commit completeSQL> select * from test;ID                                                 VALUE
    -------------------------------------------------- --------------------------------------------------
    $aa.jpg$bb.jpg                                     $aa.jpgSQL> execute toss2000('$aa.jpg$bb.jpg','$aa.jpg');update test set value = replace(id,'$aa.jpg','')PL/SQL procedure successfully completedSQL> select * from test;ID                                                 VALUE
    -------------------------------------------------- --------------------------------------------------
    $aa.jpg$bb.jpg                                     $bb.jpgSQL>