0

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

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

现在使用它:

SELECT * FROM dbo.person @name
4

2 回答 2

5

这是在查询中使用可选参数的典型方法:

declare @UserName varchar(255) = 'Frank'

select *
from person p
where (@UserName is null or UserName = @UserName)

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

于 2013-06-14T16:45:17.847 回答
0

看起来您想要一个可选的存储过程参数来拉取具有参数值的行或拉取所有行:

CREATE PROCEDURE foo
    @name AS VARCHAR(MAX) = NULL
AS
BEGIN

SELECT * FROM dbo.person WHERE Username = @name OR @name IS NULL

END
GO
于 2013-06-14T16:50:46.053 回答