现在要做一个存储过程,从外面传入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,请高手们指点一下……
解决方案 »
- 定时执行存储过程
- SUSE11.1安装oracle 10g报错。Exception in thread
- 求助,无法启动OracleOraDb10g_home1iSQL*Plus服务
- RMAN and EXPORT about the database consistency
- to_date()转换不了??
- 两个表有相同字段id,如何根据id来查询一个表的字段,更新另外一个表的字段?
- 两个sql合成一个sql后,数据出现问题。是不是我的sql语句有错误?
- 奇怪了,这样子怎么不让我排序呢?总报缺少右括号
- 新手求教同一数据库下的导出,导入不成功
- 新手
- 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>