现在要做一个存储过程,从外面传入2个值,一个ID,一个value,目的是要更新,id对应记录的A字段的一部分,比如A包含的值为
$aa.jpg$bb.jpg,value的值是$aa.jpg,最后执行SQL后能变成$bb.jpg,请高手们指点一下……
$aa.jpg$bb.jpg,value的值是$aa.jpg,最后执行SQL后能变成$bb.jpg,请高手们指点一下……
解决方案 »
- 请问:hibernate里的session如何正确关闭
- 在 Oracle Enterprise Manager 上关闭数据库实例
- 两个oracle数据库,如何实现表的同步?~~~~~~~~~~~~~~~~~~~~~~~~~谢谢各位
- 急!急!急!求从两个表中取出数据进行相加的方法
- 非常奇怪的问题,进来的有分,急,急,急!!!
- (高分求救)大家 帮忙来看看阿 我在linux8下安装的oracle9 安装的界面好像除了英文正确显示 其他的都是小方格是怎么回事亚?
- 如何手工创建Oracle数据库?
- 有没有人在啊??db link问题1!
- pl/sql 写PROCEDURE效率问题!
- oracle连接问题
- oracle存储过程错误,大家帮看看
- 关于Oracle软件的购买方面的问题
execute immediate 'update tablename set value = replace(id,'''||value||''','''||'''||')'
--注意拼接的SQL语句写法,尤其是单引号
--例如:表tabname中字段A和ID都是字符型的
execute immediate 'update tabname set a= replace(a,'''||Value||''','''') where id='''||id||'''';
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>