【发布时间】:2020-02-17 08:33:15
【问题描述】:
我见过很多动态 where 子句的例子,但没有一个能涵盖我遇到的问题。有没有可能?
Create Procedure ManualParse2
(
@Variable1 AS nvarchar(MAX)
,@Variable2 AS nvarchar(MAX)
)
AS
Select *
From Faculty
Where @Variable1
Case
When @Variable1 = 'Department' THEN Department
When @Variable1 = 'Name' THEN Name
When @Variable1 = 'Gender' THEN Gender
When @Variable1 = 'FacultyID' THEN FacultyID
END
= @Variable2
EXEC ManualParse2 @Variable1 = 'Gender', @Variable2 = 'Male'
【问题讨论】:
-
@Variable1是否总是包含有效的字段名称? -
WHERE @Variable1是什么意思?这看起来也不像动态 SQL,只是“正常”的布尔逻辑。如果您不引用表中的列,WHERE将毫无意义。 -
你也没有在你的SP中声明
@Variable,只有@Variable1和@Variable1;后者你不使用。@Variable实际上是@Variable2。 (注意,这些实际上是参数,而不是变量。) -
在这种特定情况下,@Variable1 将始终包含有效的列名。
-
这让我想到了我的问题,@DanielSteck,
WHERE @Variable1是什么意思?在哪里@Variable1什么..?
标签: sql-server tsql where-clause dynamic-sql