use*_*786 1 sql t-sql sql-server
我有一个动态构建查询的存储过程.与此查询关联的where子句基于用户选择的过滤器值.不管我做什么,where子句似乎都没有设置.
-- Dynamically build the WHERE clause based on the filters
DECLARE @whereClause as nvarchar(1024)
IF (@hasSpouse > -1)
BEGIN
IF (@hasSpouse = 0)
SET @whereClause='p.[HasSpouse]=0'
ELSE
SET @whereClause='(p.[HasSpouse]=1 OR p.[HasSpouse] IS NULL)'
END
-- Dynamically add the next filter if necessary
IF (@isVegan > -1)
BEGIN
IF (LEN(@whereClause) > 0)
BEGIN
SET @whereClause = @whereClause + ' AND '
END
IF (@isVegan = 0)
SET @whereClause = @whereClause + 'c.[IsVegan]=0'
ELSE
SET @whereClause = @whereClause + '(c.[IsVegan]=1 OR c.[IsVegan] IS NULL)'
END
PRINT @whereClause
Run Code Online (Sandbox Code Playgroud)
@whereClause从不打印任何东西.反过来,LEN(@whereClause)始终为NULL.@isVegan和@hasSpouse值将传递到存储过程中.价值观是我的预期.
我究竟做错了什么?为什么@whereClause永远不会被设置?
谢谢您的帮助!
谢谢!
首先初始化它,+ NULL始终为NULL
DECLARE @whereClause as nvarchar(1024)
SET @whereClause = ''
Run Code Online (Sandbox Code Playgroud)