(SQL数据库)我想创建一个存储过程来更新表中的数据
2个回答
展开全部
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
@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,调用存储过程
exec update_table('表名','ShenQingId','新的数据','要修改的数据的关键字')
修改ShenQingId和Workshop
exec update_table('表名','ShenQingId,Workshop','新的数据,Workshop新的数据','要修改的数据的关键字')
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询