私は4つのパラメータは、SQLクエリで動的に渡している、私は条件とatleast 1つのパラメータは、 nullの場合もSqlのクエリを書く方法Sqlの渡しパラメータを使用して
パラメータは以下のとおりです。@Orderstatusid
、@paymentStatusid
、@today
、@fromdate
、@todate
私は4つのパラメータは、SQLクエリで動的に渡している、私は条件とatleast 1つのパラメータは、 nullの場合もSqlのクエリを書く方法Sqlの渡しパラメータを使用して
パラメータは以下のとおりです。@Orderstatusid
、@paymentStatusid
、@today
、@fromdate
、@todate
あなたを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'
...
@saikrishna - このソリューションを試しましたか? – balaji
この解決策を試すことができます。
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
あなたはこれについてオンラインで調べてみましたか?これらは、SQL Serverのかなり基本的な側面です。https://www.mssqltips.com/sqlservertip/2981/using-parameters-for-sql-server-queries-and-stored-procedures/ – iamdave
はい、私は試してみました単一のパラメータ渡しの例 –
私は複数のパラメータを渡そうとしています。つまり、1つのパラメータが値を渡しても、データを取得する必要があります。 –