У меня есть форма, которую пользователи могут использовать для ввода серийного номера, чтобы узнать, находится ли на гарантии деталь.

Когдаони нажимают кнопку поиска, которая подключается к базе данных, и запускает мою хранимую процедуру, которая ищет введенный ими серийный номер и проверяет столбец DATETIME
с именем OFF_WARRANTY
, который является датой, до которой на деталь все еще распространяется гарантия.Независимо от того, будет ли эта дата до или после @today
, определяется, будет ли гарантия на деталь.
Вот моя хранимая процедура:
ALTER PROCEDURE [dbo].[WarrantyLookup]
-- Add the parameters for the stored procedure here
@serialNumber VARCHAR(150),
@warrantyStatus VARCHAR(150) OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
DECLARE @today DATE
SET @today = GETDATE()
IF(SELECT COUNT(1) FROM <serial number table> WHERE SERIAL_NUMBER = @serialNumber) = 1
SELECT OFF_WARRANTY,
CASE
WHEN OFF_WARRANTY >= @today THEN 'In warranty'
WHEN OFF_WARRANTY < @today THEN 'Out of warranty'
WHEN OFF_WARRANTY IS NULL THEN 'none'
ELSE 'multiple'
END
FROM <serial number table>
WHERE SERIAL_NUMBER = @serialNumber
END
Серийный номер может быть связан с несколькими элементамив нашей системе, поэтому первое, что я делаю, это использую Count()
, чтобы убедиться, что есть только 1. Затем я пытаюсь определить гарантийный статус элементов и создал выходную переменную для этого, которая называется @warrantyStatus
.
В чем я не уверен, так это в том, как точно установить @warrantyStatus
на результат моего CASE
оператора.На мой взгляд, я просто хочу сделать что-то довольно простое, например:
SET @warrantyStatus = <the result of my CASE statement>
Но я не знаю, как именно это напечатать?Я показал старшего разработчика в моем отделе, и он сказал что-то об использовании SqlDataReader
, а затем о if(rdr.HasRows)
, но не совсем объяснил, как.Могу ли я использовать SqlDataReader
, чтобы прочитать результаты моего заявления CASE
?
Я ценю любую помощь, которую кто-либо может предложить.Я чувствую, что почти наверняка это слишком усложняю, но я просто не соединяю последние точки, чтобы сделать эту работу.
Спасибо,
Джей