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

来源:互联网 发布:股票数学模型软件 编辑:程序博客网 时间:2024/06/08 14:20

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

 

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

    

     比如建一个学生信息表:


     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'  

 

 


原创粉丝点击