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

本文介绍了一个Oracle存储过程,用于根据ID更新记录的姓名和性别。通过拆分SQL并根据参数动态构造更新语句,处理了字段可能为null的情况。更新时需要注意单引号的转义,并通过substr函数去除末尾多余的逗号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先分析一下

根据提供的参数,进行对相应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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值