多条件判断的存储过程?怎么实现? 急啊!!!
我表结构如下:
IF EXISTS (SELECT * FROM sysobjects WHERE [NAME]='Employees')
DROP TABLE Employees
/********************************************************************************
--
--Action:创建员工信息表(Employees)
--Author:123
--Create-Date:2009-3-13
*********************************************************************************/
CREATE TABLE Employees
(
[Id] int IDENTITY(1,1) CONSTRAINT PK_EE_Id PRIMARY KEY([Id]) not null, --员工信息主键列,自动标识主键列
E_no nvarchar(20) not null, --员工身份编号
E_name nvarchar(20) not null, --员工名称
E_six varchar(10) not null, --员工性别
E_Did int CONSTRAINT FK_E_DId FOREIGN KEY(E_DId) REFERENCES Depts([Id]) not null, --员工部门编号,Depts表[Id]的编号
E_born Datetime not null, --员工出生年月
E_native nvarchar(100)null, --员工籍贯
E_address nvarchar(100) null, --员工现住地址
E_email nvarchar(20) null, --员工Email
E_phone nvarchar(30) null, --联系电话,多个电话“;”号隔开
E_telphone nvarchar(30) null, --联系人移动电话,多个电话用“;”号隔开
E_qq nvarchar(15) null, --员工QQ
E_datetime datetime not null, --员工入职日期
E_picpath nvarchar(30) null, --员工相片路径
E_work nvarchar(30) null, --员工职位
E_login nvarchar(20) not null, --员工账号
E_pwd nvarchar(20) not null, --员工密码
E_Rid int CONSTRAINT FK_E_RId FOREIGN KEY(E_RId) REFERENCES Roles([Id])not null,--员工权限编号,Roles表[Id]的外键
E_remark nvarchar(200) null, --备注
)
我要实现根据
E_no、E_name、E_Did、E_work、E_Rid 这5个条件来查询,
我的存储过程这样写的:
-------------------------------------------------------------------------------------------
IF EXISTS( SELECT * FROM sysobjects WHERE name='employees_select_SQL_proc' )
DROP PROCEDURE employees_select_SQL_proc
GO
/******************************************************************
--
--action:根据查询条件查询符合条件的员工信息
--author:
--create-date:2009-3-12
--parameter:@name 员工名称
--parameter:@did 部门编号
--parameter:@work 职位
--parameter:@rid 角色编号
--
*************************************************************************/
CREATE PROCEDURE employees_select_SQL_proc
@name nvarchar(20),
@did nvarchar(3),
@work nvarchar(10),
@rid nvarchar(3)
AS
DECLARE @sql nvarchar(1000)
SET @sql='SELECT * FROM employees WHERE 1=1'
IF(@name IS NOT NULL)
BEGIN
SET @sql=@sql+'AND E_name LIKE ''%'+@name+'%'' '
END
IF(@did IS NOT NULL)
BEGIN
SET @sql=@sql+'AND E_Did ='''+CONVERT(int,@did)+''''
END
IF(@work IS NOT NULL)
BEGIN
SET @sql=@sql+' AND E_work LIKE ''%'+@work+'%'' '
END
IF(@rid IS NOT NULL)
BEGIN
SET @sql=@sql+'AND E_Rid ='''+CONVERT(int,@rid)+''''
END
EXEC(@sql)
GO
-------------------------------------------------------------------------------------------
但是有问题,不知道怎么修改?谁能帮帮忙啊?急用啊?