У меня есть эта проблема, когда мне нужно установить «необязательные» параметры для моей хранимой процедуры, чтобы она работала нормально. Например, у меня есть это:Параметры sql, которые могут быть необязательными
CREATE PROCEDURE [dbo].[Search]
(
@StartTime datetime = NULL,
@EndTime datetime = NULL,
@CustomerEmail nvarchar(255) = NULL,
@OrderStatusID int
)
Сейчас, на мой веб-сайт .net У меня есть это как пример, пожалуйста, имейте в виду, что может быть только один параметр, или там может быть все из них:
commAdvanced.Parameters.Add("@StartTime", SqlDbType.DateTime).Value = startDate;
commAdvanced.Parameters.Add("@EndTime", SqlDbType.DateTime).Value = endDate;
commAdvanced.Parameters.Add("@CustomerEmail", SqlDbType.nvarchar).Value = null;
commAdvanced.Parameters.Add("@OrderStatusID", SqlDbType.Int).Value = null;
И это запрос:
SELECT * FROM Order
WHERE CreatedOn > CAST(@StartTime as datetime)
AND CreatedOn < CAST(@EndTime as datetime)
AND Order.OrderStatusID = @OrderStatusID
AND Order.CustomerEmail = @PaymentStatusID
Я не подвожу никаких записей, когда я делаю это, может кто-то пожалуйста, помогите мне, что мне нужно сделать, чтобы изменить.
Откуда появился '@ PaymentStatusID' в вашем операторе' SELECT'? – Oded