如何在存储过程中实现插入更新数据

如何在存储过程中实现插入更新数据,第1张

--先在数据库中创建test表,表中有列名为name,类型为varchar(50)

然后先执行

create procedure proc_insert

@name varchar(50)

as

begin

insert into test values(@name)--插入数据

end

go

create procedure proc_update

@newname varchar(50),@oldname varchar(50)

as

begin

update test set name=@newname where name=@oldname--更新数据

end

go

--其中proc_insert为存储过程名,可自定义 procedure可使用简写proc

上面执行完成后调用存储过程

exec proc_insert '晓华'--将"晓华"添加到test表中

exec proc_update '小明','晓华' --将表中'晓华' 改为'小明',必须与存储过程变量顺序相同

exec proc_update @oldname='小明',@newname='晓华'--与存储过程变量顺序可以不同

drop procedure proc_insert 删除存储过程proc_insert

create procedure update_table ( @c_tbname varchar(128), -- 要更新的表名

@c_upcolname varchar(1000), -- 要更新的字段列表,以豆号隔开

@c_updata varchar(1000), -- 要更新的数据列表,以豆号隔开,要与相应的列一一对应

@c_id varchar(100) -- 要更新的关键字,没有关键字的不能更新

)

as

begin

declare @c_sql varchar(max)

declare @i_bcol int

declare @i_ecol int

declare @i_bdata int

declare @i_edata int

if @c_id is null or @c_id = ''

return

set @i_bcol= 1

set @i_bdata= 1

set @c_sql = ' update ' + @c_tbname + ' set '

set @i_ecol = charindex(',' , @c_upcolname , @i_bcol )

while @i_ecol >0

begin

set @c_sql = @c_sql + substring( @c_upcolname,@i_bcol,@i_ecol - 1 ) + ' = '

set @i_edata= charindex(',' , @c_updata, @i_bdata)

set @c_sql = @c_sql + '''' + substring( @c_updata,@i_bdata,@i_edata- 1 ) + ''' ,'

set @i_bcol = @i_ecol + 1

set @i_ecol = charindex(',' , @c_upcolname , @i_bcol )

end

set @c_sql = @c_sql + substring( @c_upcolname,@i_bcol,len@c_upcolname) - 1 ) + ' = '

set @c_sql = @c_sql + '''' + substring( @c_updata,@i_bdata,len(@c_updata)- 1 ) + ''' '

set @c_sql = @c_sql + ' where id = ''' + @c_id + ''' '

exec ( @c_sql )

end


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10037281.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存