可以,对参数加判断就行,类似这样CREATE PROCEDURE DBO.SelectFromTable @nIP int = NULL, @nType int = NULL AS BEGIN SELECT * FROM dbo.Client where (@nType is null or nType = @nType ) and (@nIP is null or nIP = @nIP ) END把参数都传入,为空也没问题,就不会有判断了
我觉得还是在存储过程中定义一个BIT 判断是增加还是修改,这样比较保险点儿
create proc myproc @id int, @name varcar(20)=null, @location varchar(50)=null as begin 根据参数判断是更新还是插入新数据 end 调用: exec myproc 1 只传递一个参数 或者 exec myproc 1,'jack','shanghai'
create proc sp_aaa
@a varchar(10),
@b varchar(10)=''
asif @b=''
print 'b为空值'
else
print @a
goexec sp_aaa 'aaaaaaaaaaa'
结果:b为空值exec sp_aaa 'aaaaaaaaaaa','asdfasdf'
结果:aaaaaaaaaa
@nIP int = NULL,
@nType int = NULL
AS
BEGIN
SELECT * FROM dbo.Client where (@nType is null or nType = @nType ) and (@nIP is null or nIP = @nIP )
END把参数都传入,为空也没问题,就不会有判断了
create proc myproc
@id int,
@name varcar(20)=null,
@location varchar(50)=null
as
begin
根据参数判断是更新还是插入新数据
end
调用: exec myproc 1 只传递一个参数
或者 exec myproc 1,'jack','shanghai'