首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Sql中使用传递参数编写Sql查询

如何在Sql中使用传递参数编写Sql查询
EN

Stack Overflow用户
提问于 2017-05-08 17:32:08
回答 2查看 1.1K关注 0票数 0

我有4个参数在sql查询中动态传递,我想用where条件中参数过滤数据,至少有一个参数应该传值,其余的可能为空

参数为:@Orderstatusid@paymentStatusid@today@fromdate@todate

EN

回答 2

Stack Overflow用户

发布于 2017-05-08 18:10:26

您需要将每个输入参数初始设置为NULL,然后通过传递必要的参数来覆盖它。

代码语言:javascript
复制
ALTER PROC YOUR_PROCEDURE_NAME
    (@Orderstatusid INT = NULL
     ,@paymentStatusid INT = NULL
     ,@today DATE = NULL
     ,@fromdate DATE = NULL
     ,@todate DATE = NULL
     )
AS
BEGIN
        -- YOUR CODE HERE....
        -- YOUR WHERE CLAUSE SHOULD HAVE
         Orderstatusid =    @Orderstatusid OR
         paymentStatusid = @paymentStatusid OR
         today = @today OR
         fromdate = @fromdate OR
         todate = @todate



END
GO

You can call your sp like below:

EXEC YOUR_PROCEDURE_NAME @Orderstatusid = '101'
OR
EXEC YOUR_PROCEDURE_NAME @today = 'YOUR_DATE'
...
票数 0
EN

Stack Overflow用户

发布于 2017-05-08 18:17:22

您可以尝试此解决方案。

代码语言:javascript
复制
declare @whereCondition varchar(max)
declare @sql varchar(max) 

if (@Orderstatusid is not null)
set @whereCondition = 'Orderstatusid = ' + @Orderstatusid

if (@paymentStatusid is not null)
begin
if(@whereCondition !='')
begin
    set @whereCondition = @whereCondition +' and paymentStatusid = ' + @paymentStatusid --use and/or  as per your requirement
end
else
begin 
    set @whereCondition = ' paymentStatusid = ' + @paymentStatusid
end
end

-------write if condition for all cases

set @sql= 'select * from TABLENAME where ' + @whereCondition

exec @sql
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43844226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档