2017-05-08 12 views
0

私は4つのパラメータは、SQLクエリで動的に渡している、私は条件とatleast 1つのパラメータは、 nullの場合もSqlのクエリを書く方法Sqlの渡しパラメータを使用して

パラメータは以下のとおりです。@Orderstatusid@paymentStatusid@today@fromdate@todate

+0

あなたはこれについてオンラインで調べてみましたか?これらは、SQL Serverのかなり基本的な側面です。https://www.mssqltips.com/sqlservertip/2981/using-parameters-for-sql-server-queries-and-stored-procedures/ – iamdave

+0

はい、私は試してみました単一のパラメータ渡しの例 –

+0

私は複数のパラメータを渡そうとしています。つまり、1つのパラメータが値を渡しても、データを取得する必要があります。 –

答えて

0

あなたをNULL、その後、必要なパラメータを渡すことによって、それを上書きするintiallyすべての入力パラメータを設定する必要があります。

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

@saikrishna - このソリューションを試しましたか? – balaji

0

この解決策を試すことができます。

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 
関連する問題