在我的应用程序中,我有一个包含一些过滤器字段的表单。不需要任何内容​​,如果用户确实输入了值,则需要在where子句中将其作为参数提供。

我不知道如何在存储过程中处理此问题。

例如以下存储过程:

--parameters
@customername varchar(50),

SELECT * from ORDERS
WHERE customername = @customername


因此,如果用户输入客户名,那么它当然会返回该客户名的所有内容,如果用户未输入用户名,则需要返回所有内容。
如何在此声明中执行此操作?如果用户未输入客户名称,是否可以通过通配符?还是我需要一个单独的程序。
我希望这是有道理的,谢谢!

最佳答案

尝试这个

--parameters
@customername varchar(50) = NULL,

SELECT * from ORDERS
WHERE customername = COALESCE(@customername, customername)


根据您需要返回null的客户名的注释,这与Russ'集成在一起。

SELECT * from ORDERS
WHERE (customername = COALESCE(@customername, customername)
 OR customername IS NULL)

关于c# - 具有非必需参数的SQL存储过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3478668/

10-12 12:39