将Where子句放在参数中

rue*_*edi 0 sql t-sql

我想在参数中使用where子句.我已经尝试了以下代码,但它不起作用.最后一行我们用红色下划线,我认为我必须以某种方式将参数绑定到select命令.如果有人可以帮助我,那会很棒.

Begin
declare @name varchar(MAX)
declare @x int
Set @x = 1
If @x = 1
BEGIN
SET @name = 'WHERE Username = Frank'
END
ELSE
BEGIN
SET @name = ''
END
END
Run Code Online (Sandbox Code Playgroud)

现在使用它:

SELECT * FROM dbo.person @name
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

以下是在查询中包含可选参数的典型方法:

declare @UserName varchar(255) = 'Frank'

select *
from person p
where (@UserName is null or UserName = @UserName)
Run Code Online (Sandbox Code Playgroud)

如果将变量设置为,NULL则选择所有用户.如果将其设置为值,则仅选择该用户.