(SQL数据库)我想创建一个存储过程来更新表中的数据
答案:2 悬赏:50 手机版
解决时间 2021-04-05 11:29
- 提问者网友:情歌越听越心酸
- 2021-04-05 04:42
(SQL数据库)我想创建一个存储过程来更新表中的数据
最佳答案
- 五星知识达人网友:从此江山别
- 2021-04-05 04:50
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追问就是这个表,比如说我只修改ShenQingId这一列的信息,也可能修改ShenQingId和Workshop的内容。
追答创建存储过程后,根据实际情况运行存储过程就可以了.
比如要修改ShenQingId,调用存储过程
exec update_table('表名','ShenQingId','新的数据','要修改的数据的关键字')
修改ShenQingId和Workshop
exec update_table('表名','ShenQingId,Workshop','新的数据,Workshop新的数据','要修改的数据的关键字')
@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追问就是这个表,比如说我只修改ShenQingId这一列的信息,也可能修改ShenQingId和Workshop的内容。
追答创建存储过程后,根据实际情况运行存储过程就可以了.
比如要修改ShenQingId,调用存储过程
exec update_table('表名','ShenQingId','新的数据','要修改的数据的关键字')
修改ShenQingId和Workshop
exec update_table('表名','ShenQingId,Workshop','新的数据,Workshop新的数据','要修改的数据的关键字')
全部回答
- 1楼网友:往事隔山水
- 2021-04-05 05:04
你不确定更新的列 那传进来的参数都有些什么追问
就是这个表,比如说我只修改ShenQingId这一列的信息,也可能修改ShenQingId和Workshop的内容。
就是这个表,比如说我只修改ShenQingId这一列的信息,也可能修改ShenQingId和Workshop的内容。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯