输入参数不确定的存储过程的编写

以前写存储过程,输入参数和输出参数都确定,现在遇到一个问题,我要实现组合查询,那么输入的参数就会出现有多个参数,但是传

 

储过程的可能只有一部分有值,而且每次有值的参数又不能确定。

    

     比如建一个学生信息表:


     create table tb_stuInfo

     (

stuId int identity(1,1) primary key,--序号

stuNum nchar(10) not null unique,--学号

	stuName nvarchar(10) not null,--姓名

stuSex nchar(1) not null,--性别,1表示男,0表示女

stuAge int not null,--年龄

stuPhone nchar(11),--电话号码

stuEmail nvarchar(30)--电子邮件

     )

     

     现在要根据“学号”、“姓名”或者“性别”来查询学生信息,输入参数就有stuNum、stuName、stuSex,如果输入的参数都为空则表示

 

询的所有学生的信息,否则查询的是有值的参数的学生信息。

 

     要实现这样的要求的存储过程如下:

 

     create procedure usp_GetStuInfo

        @stuNum nchar(10)=null,

@stuName nvarchar(10)=null,

@stuSex nchar(1)=null

     as

     DECLARE @temp NVARCHAR(10) SET @temp='@#$%&*^()?'

select * from tb_stuInfo 

where 1=1 and isnull(stuNum,@temp) like isnull('%'+@stuNum+'%',isnull(stuNum,@temp))  

    and isnull(stuName,@temp) like isnull('%'+@stuName+'%',isnull(stuName,@temp))

    and isnull(stuSex,@temp) like isnull('%'+@stuSex+'%',isnull(stuSex,@temp))

 

(1)查询性别为“男”的学生信息:

 

exec usp_GetStuInfo null,null,'1'  

 

(2)查询 学号=2007440972;性别为男的学生信息:

 

exec usp_GetStuInfo 2007440972,null,'1'  

 

 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值