小弟现在有这么一个需求,提供一个查询功能,查询字段不定,按照用户填写的内容查询指定字段,我以前根据控件是否为空拼接SQL语句,现在用存储过程实现,参考论坛里的一篇帖子修改,代码如下,但是取不到任何记录,这个存储过程哪里有问题吗?(非计算机专业,毕业设计要用到,半路出家,基础不熟,求指教)
CREATE PROCEDURE getDepList
(
@部门ID CHAR(4),
@部门简介 TEXT,
@部门名 NVARCHAR(20),
@负责人 NVARCHAR(10),
@部门等级 CHAR(2),
@部门人数上限 INT,
@部门人数下限 INT,
@部门电话 CHAR(11),
@日期下限 DATETIME,
@日期上限 DATETIME,
@启用 CHAR(2),
@上级部门 NVARCHAR(20)
)
AS
SELECT 部门ID,
部门名,
负责人,
部门等级,
部门人数,
部门电话,
成立日期,
启用,
上级部门,
部门简介
FROM 部门信息
WHERE 部门ID LIKE '%' + cast(ISNULL(@部门ID, '')as varchar) + '%'
AND 部门名 LIKE '%' + ISNULL(@部门名, '') + '%'
AND 负责人 LIKE '%' + ISNULL(@负责人, '') + '%'
AND 部门等级 LIKE '%' + ISNULL(@部门等级, '') + '%'
AND 部门人数 BETWEEN (ISNULL(@部门人数下限, 0)) AND (ISNULL(@部门人数上限, POWER(2, 30)))
AND 部门电话 LIKE '%' + ISNULL(@部门电话, '') + '%'
AND 成立日期 BETWEEN (
ISNULL(@日期下限, CAST('1900-01-01 01:00:00.000' AS DATETIME))
)
AND (ISNULL(@日期上限, GETDATE()))
AND 启用 LIKE '%' + ISNULL(@启用, '') + '%'
AND 上级部门 LIKE '%' + ISNULL(@上级部门, '') + '%'
AND 部门简介 LIKE '%' + ISNULL(CAST(@部门简介 AS VARCHAR), NULL) +
'%'
GO
------解决方案--------------------
CREATE PROCEDURE GetSomething
(@课程名 varchar(10))
as
select * from Course where Cname like '%'+cast(isnull(@课程名,'') as varchar)+'%'
print cast(isnull(@课程名,'') as varchar)
exec GetSomething ''
我按照你的写法写了一个测试sp,可以正常查询到数据
这样吧,你把你的where 条件,全部去掉,
肯定能查到值吧
然后一个一个地加上(查询字段)
看看问题出在那个地方
------解决方案--------------------
你用sql profiler跟踪一下把,或者你有qq吗,帮你看一下