0
CREATE PROC [dbo].[GetSimExpiryDate]
(@val varchar(5))
AS
BEGIN
IF(@val ='1')
BEGIN
(SELECT
WS.WSRecordId, WS.SIMNumber,
BES.DisplayName,
BES.PIN, BES.BESSqlServer,
CONVERT(VARCHAR(11), WS.ExpiryDate, 106) as ExpiryDate
FROM
WEBSERVICE_CACHE AS WS
LEFT OUTER JOIN
BES_SERVER_CACHE AS BES ON WS.SIMNumber = LEFT(BES.ICCID, 19)
WHERE
CONVERT(DATETIME, GETDATE(), 109) > CONVERT(DATETIME, WS.ExpiryDate, 109))
END
ELSE IF(@val ='2')
BEGIN
(SELECT
WS.WSRecordId, WS.SIMNumber,
BES.DisplayName,
BES.PIN, BES.BESSqlServer,
CONVERT(VARCHAR(11), WS.ExpiryDate, 106) as ExpiryDate
FROM
WEBSERVICE_CACHE AS WS
LEFT OUTER JOIN
BES_SERVER_CACHE AS BES ON WS.SIMNumber = LEFT(BES.ICCID,19)
WHERE
MONTH(WS.ExpiryDate) = MONTH(GETDATE())
AND YEAR(WS.ExpiryDate) = YEAR(GETDATE())
AND CONVERT(DATETIME, GETDATE(), 109) <= CONVERT(DATETIME, WS.ExpiryDate, 109))
END
У меня есть хранимая процедура, которая имеет, если и остальные блоки на основе параметра, переданном в процедуреДинамический запрос в SQL сервере
В обеих запросах весь код такой же, за исключением того, где положение, как удалить это избыточность. Поскольку у меня есть много elseif
Anik, я называю хранимую процедуру из файла в Асессе данных слоя .cs то в этом Execute sp_executesql не требуется Я думаю, –
sp_Executesql будет вызывать внутри вашей процедуры магазина. вам не о чем беспокоиться. sp_Executesql - это способ выполнения строки в виде SQL-запроса. –
Если у меня есть только один параметр, то зачем использовать параметр paramdefinition –