SQL2000存储过程UPDATE实现参数随意个数?
你们有没这样的存储过程,正常情况下,1个表很多字段,比如20个字段,但有时候,只更新其中的15个,有时候,只更新其中的17个?如果次次都按参数的个数来写1个过程,那就很多个了。于是,我就想,有没有存储过程,可以实现,随便个数的参数的,就出现以下的了。。ALTER PROCEDURE [dbo].[update_stuMarks]
@stu_name char(10)=null,
@stu_age int=null,
@stu_sex char(10)=null,
@res int output
AS
declare @set_str char(250)
declare @where_str char(250)
declare @sql_str char(500)
set @set_str=null
if @stu_name is not null
begin
if @set_str is null
set @set_str='stu_name='+ltrim(rtrim(@stu_name))
else
set @set_str='stu_name='+ltrim(rtrim(@stu_name))+','+ltrim(rtrim(@set_str))
end
if @stu_sex is not null
begin
if @set_str is null
set @set_str='stu_sex='+ltrim(rtrim(@stu_sex))
else
set @set_str='stu_sex='+ltrim(rtrim(@stu_sex))+','+ltrim(rtrim(@set_str))
end
if @stu_age is not null
begin
if @set_str is null
set @set_str='stu_age='+ltrim(rtrim(@stu_age))
else
set @set_str='stu_age='+ltrim(rtrim(@stu_age))+','+ltrim(rtrim(@set_str))
end
if @set_str is null
set @res=-1
else
begin
set @sql_str='update stuMarks set '+ @set_str
exec(@sql_str)
set @res=1
end
--select @res,@set_str
GO
declare @res1 int
declare @stu_name char(10)
declare @stu_sex char(10)
declare @stu_age int
set @stu_name=30
set @stu_sex=20
set @stu_age=10
exec update_stuMarks @stu_name=@stu_name,@res=@res1 output
--exec update_stuMarks @stu_name=@stu_name,@stu_sex=@stu_sex,@res=@res1 output
--exec update_stuMarks @stu_name=@stu_name,@stu_sex=@stu_sex,@stu_age=@stu_age,@res=@res1 output
select * from stuMarks
这样的方法可以吗?实用不?
[ 本帖最后由 mywisdom88 于 2015-7-7 17:39 编辑 ]