Я хочу выбрать параметры хранимой процедуры, а затем проверить, является ли каждый параметр нулевым или нет в цикле.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я хочу оценить переменную вЕсли заявление, оно не оценивается правильно.Я хочу оценить каждый параметр, который я сохранил в табличной переменной.Я не знаю синтаксис для этого ... или, возможно, это даже невозможно?Требуется ли для этого динамический SQL?Если это так, то при выполнении динамического sql значение переменной будет выходить за рамки, так как мне с этим справиться?
Я проверил все, пока работает оператор IF.
CREATE PROCEDURE dbo.UpdateBank
(
@BankKey [smallint] = NULL,
@Bank [varchar] (30) = NULL,
@BankCode [char] (4) = NULL,
@MasterBankCode [char] = NULL,
@Bin [char] (6) = NULL,
@WebSite [varchar] (50) = NULL,
@isActive [bit] = NULL,
@CreateDate [smalldatetime] = NULL
)
AS
SET NOCOUNT ON
SET ANSI_NULLS OFF
DECLARE @MaxRow TINYINT, @Count TINYINT
DECLARE @SPName VARCHAR (128), @CurrentRow TINYINT
SET @SPName = OBJECT_NAME(@@PROCID) -- SP self-reference to find its current name
DECLARE @SPParametersList TABLE (ID INT Identity(1,1) Primary Key,
ParameterName NVARCHAR (128),
DataType NVARCHAR (128),
ParameterMode NVARCHAR (10))
CREATE TABLE #TempExec(ID INT Identity(1,1) Primary Key,
Num BIT)
INSERT INTO @SPParametersList (ParameterName, Datatype, ParameterMode)
SELECT PARAMETER_NAME,DATA_TYPE,PARAMETER_MODE
FROM INFORMATION_SCHEMA.PARAMETERS
WHERE SPECIFIC_NAME = @SPName
SET @CurrentRow = 1
SELECT @MaxRow = ISNULL(MAX(ID),0) FROM @SPParametersList
WHILE @CurrentRow <= @MaxRow
BEGIN
IF ((SELECT ParameterName FROM @SPParametersList WHERE ID = @CurrentRow) <> NULL)
BEGIN
SELECT 'Success'
SET @Count = @Count + 1
END
SELECT 'Fail'
SET @CurrentRow = @CurrentRow + 1
END
SELECT @Count
Я всегда получаю 'Fail', когда запускаю этот сохраненный процесс