您的位置:首页 > 数据库 > Oracle

oracle存储过程——按id更新相关信息

2012-01-20 10:28 295 查看
先分析一下

根据提供的参数,进行对相应id的姓名性别进行更改,也就是说必须对下面的SQL语句进行拆分

update test set name='郭德纲' , sex='男' where id='1001'


拆分成

1.update test set name='

2.郭德纲 ——也就是传递过来的参数

3.' , sex='

4.男

5.' where id='

6.1001

7.'

上面的拆分只是一个思路,在实际编写的过程中可根据情况进行调整,由于涉及到多个字段的更新(即动态更新),必须要考虑的是","如何添加的问题,不理解没关系,看代码就懂了

CREATE OR REPLACE PROCEDURE updateinfo_id(
myid in varchar,
myname in varchar,
mysex in varchar)
AS
mypl varchar2(100);
myname2 varchar(20);
mysex2 varchar(20);
BEGIN
mypl:='update test set ';
if(myname is not null) then
mypl:=mypl || 'name=' ||''''|| myname ||''''||'  ,';
end if;
if(mysex is not null) then
mypl:=mypl || 'sex=' ||''''|| mysex ||''''|| ' ,';
end if;
mypl:=substr(mypl,0,length(mypl)-1);
mypl:=mypl || 'where id=' ||''''|| myid ||'''';
dbms_output.put_line(mypl);
execute immediate mypl;
select name,sex into myname2,mysex2 from test where id=myid;
dbms_output.put_line('编号' || myid ||'姓名'|| myname2 || '性别' || mysex2);
END;
/

我的思路是:

判断相应字段的参数是否为空,若不为空则进行更新操作(即构造mypl)

那么里面的''''连续四个单引号是什么??是为了对update语句中的单引号进行转义,这部分在网上不难找到/article/8126687.html

每对mypl进行构造一次,则在后面加个",",然后再最后将最后面的逗号通过substr函数去掉

===================================

插入的操作也和这个类似
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐