f_split: https://www.blogger.com/blog/post/edit/4093535634636061865/4702745486128136601
can parse the filter string as below:
N'''a'' = ''b'' and o.optname=''merge'' and (''merge'' <a.name and ''merge'' < optname or (low > 10)) And name<> name or name >= ''merge'' and name between ''a'' and ''b'' and name in (''a'',''b'' , ''c'' ) and ''a''=''a'' and (name like ''%s'' or not name like ''%s'' or name not like ''%s'') and (name is null or name is not null or not name is null) '
1 Test Code:
SELECT
N'select * from spt_values as s where name=''rpc'' ' AS Before
, N'number = 2 or (type=''a'')' AS Filter
, N'' AS [After]
, N'spt_values' AS [Tables]
INTO #SecureDynamicParameters
EXEC [SecureDynamicSql]
2 Stored Procedure SecureDynamicSql as below:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('dbo.SecureDynamicSql') IS NOT NULL
DROP PROCEDURE dbo.SecureDynamicSql
GO
Create procedure [dbo].[SecureDynamicSql]
As
Begin
Declare
@v0 Nvarchar(max)
, @v1 Nvarchar(max)
, @v2 Nvarchar(max)
, @v3 Nvarchar(max)
, @v4 Nvarchar(max)
, @v5 Nvarchar(max)
, @v6 Nvarchar(max)
, @v7 Nvarchar(max)
, @v8 Nvarchar(max)
, @v9 Nvarchar(max)
, @v10 Nvarchar(max)
, @v11 Nvarchar(max)
, @v12 Nvarchar(max)
, @v13 Nvarchar(max)
, @v14 Nvarchar(max)
, @v15 Nvarchar(max)
, @v16 Nvarchar(max)
, @v17 Nvarchar(max)
, @v18 Nvarchar(max)
, @v19 Nvarchar(max)
, @v20 Nvarchar(max)
, @v21 Nvarchar(max)
, @v22 Nvarchar(max)
, @v23 Nvarchar(max)
, @v24 Nvarchar(max)
, @v25 Nvarchar(max)
, @v26 Nvarchar(max)
, @v27 Nvarchar(max)
, @v28 Nvarchar(max)
, @v29 Nvarchar(max)
, @v30 Nvarchar(max)
, @v31 Nvarchar(max)
, @v32 Nvarchar(max)
, @v33 Nvarchar(max)
, @v34 Nvarchar(max)
, @v35 Nvarchar(max)
, @v36 Nvarchar(max)
, @v37 Nvarchar(max)
, @v38 Nvarchar(max)
, @v39 Nvarchar(max)
, @v40 Nvarchar(max)
, @v41 Nvarchar(max)
, @v42 Nvarchar(max)
, @v43 Nvarchar(max)
, @v44 Nvarchar(max)
, @v45 Nvarchar(max)
, @v46 Nvarchar(max)
, @v47 Nvarchar(max)
, @v48 Nvarchar(max)
, @v49 Nvarchar(max)
, @v50 Nvarchar(max)
Declare
@Delimiter Nchar
, @Condition Nvarchar(max)
, @PartCondition Nvarchar(max)
, @PeriodIndex int
, @Seq int
, @ReversedCondition Nvarchar(20)
, @HoldParenthesis Nvarchar(10)
, @HoldParm Nvarchar(max)
, @HoldKey Nvarchar(10)
, @ParsedFilter Nvarchar(max)
, @ParmList Nvarchar(max)
, @Sql Nvarchar(max)
, @DataType Nvarchar(20)
, @MaximumLength int
, @Pricision int
, @PricisionRadix int
, @ValueIndex int
, @SelectClauseIndex int
, @FromClauseIndex int
, @WhereClauseIndex int
, @PartValueIndex int
, @StartValueIndex int
, @EndValueIndex int
, @PartValue Nvarchar(max)
Declare
@Before Nvarchar(max)
, @Filter Nvarchar(max)
, @After Nvarchar(max)
, @Tables Nvarchar(max)
, @Severity INT
SET @Severity = 0
IF OBJECT_ID(N'tempdb..#SecureDynamicParameters') IS NULL OR NOT EXISTS(SELECT 1 FROM #SecureDynamicParameters)
RETURN @Severity
SELECT TOP 1
@Before = Before
, @Filter = Filter
, @After = [After]
, @Tables = [Tables]
FROM #SecureDynamicParameters
Declare @t table (val nvarchar(max), seq int)
Set @Delimiter = N' '
Set @Filter += @Delimiter
Set @Filter = Replace(@Filter, N'(', N' ( ')
Set @Filter = Replace(@Filter, N')', N' ) ')
Set @Filter = Replace(@Filter, N',', N' , ')
Set @Filter = Replace(@Filter, N'<>', N'$@$')
Set @Filter = Replace(@Filter, N'>=', N'$@@$')
Set @Filter = Replace(@Filter, N'<=', N'$@@@$')
Set @Filter = Replace(@Filter, N'>', N' > ')
Set @Filter = Replace(@Filter, N'<', N' < ')
Set @Filter = Replace(@Filter, N'=', N' = ')
Set @Filter = Replace(@Filter, N'$@$', N' <> ')
Set @Filter = Replace(@Filter, N'$@@$', N' >= ')
Set @Filter = Replace(@Filter, N'$@@@$', N' <= ')
Set @ParsedFilter = N''
Set @ParmList = N''
Set @ValueIndex = 0
SET @PartValueIndex = 0
SET @StartValueIndex = CHARINDEX('''', @Filter)
WHILE @StartValueIndex > 0
BEGIN
Set @EndValueIndex = CHARINDEX('''', @Filter, @StartValueIndex + 1)
IF @EndValueIndex <= @StartValueIndex - 1
break
SET @PartValue = SUBString(@Filter, @StartValueIndex, @EndValueIndex - @StartValueIndex + 1)
set @Filter= REPLACE(@Filter, @PartValue, Replace(@PartValue, N' ', NCHAR(30)))
SET @StartValueIndex = CHARINDEX('''', @Filter, @EndValueIndex + 1)
END
;With a As
(
Select Cast(1 As BigInt) f, CharIndex(@Delimiter, @Filter) t, 1 seq
Union all
Select t + 1, CharIndex(@Delimiter, @Filter, t + 1), seq + 1
From a
Where CharIndex(@Delimiter, @Filter, t + 1) > 0
)
Insert @t
Select substring(@Filter, f, t - f), seq from a option (maxrecursion 0)
Declare ConditionCusror Cursor Scroll
For Select val From @t
Open ConditionCusror
While(1 = 1)
Begin
Fetch From ConditionCusror
Into @Condition
IF @@Fetch_Status <> 0
Break
SET @StartValueIndex = CHARINDEX('''', @Condition)
IF @StartValueIndex > 0
BEGIN
Set @EndValueIndex = CHARINDEX('''', @Condition, @StartValueIndex + 1)
IF @EndValueIndex > @StartValueIndex - 1
BEGIN
SET @PartValue = SUBString(@Condition, @StartValueIndex, @EndValueIndex - @StartValueIndex + 1)
set @Condition= REPLACE(@Condition, @PartValue, Replace(@PartValue, NCHAR(30), N' '))
set @Condition= REPLACE(@Condition, N'N''', N'')
set @Condition= REPLACE(@Condition, N'''', N'')
END
END
Set @Condition = Rtrim(Ltrim(@Condition))
If @Condition = N'' Continue
-- Process operand and key word
If Upper(@Condition) In (N'AND', N'OR', N'LIKE', N'IS', N'NOT', N'NULL', N'BETWEEN', N'IN', N'>', N'<', N'=', N'<>', N'>=', N'<=', N'(', N')', N',')
Begin
Set @ParsedFilter += N' ' + @Condition + N' '
If Upper(@Condition) In (N'AND', N'OR', N'LIKE', N'IS', N'BETWEEN', N'IN')
And Not (Upper(@Condition) = N'AND' And @HoldKey = N'BETWEEN')
Set @HoldKey = Upper(@Condition)
If Upper(@Condition) = N')' And @HoldKey = N'IN'
Set @HoldParm = null
Continue
End
Set @PeriodIndex = CharIndex(N'.', @Condition)
If @PeriodIndex >= 0
Set @PartCondition = Substring(@Condition, @PeriodIndex + 1, Len(@Condition) - @PeriodIndex)
Else
Set @PartCondition = @Condition
Select
@DataType = DATA_TYPE
, @MaximumLength = CHARACTER_MAXIMUM_LENGTH
, @Pricision = NUMERIC_PRECISION
, @PricisionRadix = NUMERIC_PRECISION_RADIX
From INFORMATION_SCHEMA.COLUMNS
Where TABLE_NAME in (select val FROM dbo.f_split(@Tables, N','))
And COLUMN_NAME = @PartCondition
If @DataType is not null -- Object name
Begin
Set @ParsedFilter += N' ' + QuoteName(@Condition)
If Upper(@DataType) = N'NVARCHAR' OR Upper(@DataType) = N'VARCHAR'
Begin
Set @HoldParm = @DataType + N' (' + CAST(@MaximumLength AS nvarchar(20))+ N')'
End
Else If Upper(@DataType) = N'DECIMAL'
Begin
Set @HoldParm = @DataType + N' (' + Cast(@Pricision As Nvarchar(5)) + N', ' + Cast(@PricisionRadix As Nvarchar(5)) + N')'
End
Else
Begin
Set @HoldParm = @DataType
End
Set @DataType = null
End
Else -- Value
Begin
If @ValueIndex = 0
Set @v0 = @Condition
If @ValueIndex = 1
Set @v1 = @Condition
If @ValueIndex = 2
Set @v2 = @Condition
If @ValueIndex = 3
Set @v3 = @Condition
If @ValueIndex = 4
Set @v4 = @Condition
If @ValueIndex = 5
Set @v5 = @Condition
If @ValueIndex = 6
Set @v6 = @Condition
If @ValueIndex = 7
Set @v7 = @Condition
If @ValueIndex = 8
Set @v8 = @Condition
If @ValueIndex = 9
Set @v9 = @Condition
If @ValueIndex = 10
Set @v10 = @Condition
If @ValueIndex = 11
Set @v11 = @Condition
If @ValueIndex = 12
Set @v12 = @Condition
If @ValueIndex = 13
Set @v13 = @Condition
If @ValueIndex = 14
Set @v14 = @Condition
If @ValueIndex = 15
Set @v15 = @Condition
If @ValueIndex = 16
Set @v16 = @Condition
If @ValueIndex = 17
Set @v17 = @Condition
If @ValueIndex = 18
Set @v18 = @Condition
If @ValueIndex = 19
Set @v19 = @Condition
If @ValueIndex = 20
Set @v20 = @Condition
If @ValueIndex = 21
Set @v21 = @Condition
If @ValueIndex = 22
Set @v22 = @Condition
If @ValueIndex = 23
Set @v23 = @Condition
If @ValueIndex = 24
Set @v24 = @Condition
If @ValueIndex = 25
Set @v25 = @Condition
If @ValueIndex = 26
Set @v26 = @Condition
If @ValueIndex = 27
Set @v27 = @Condition
If @ValueIndex = 28
Set @v28 = @Condition
If @ValueIndex = 29
Set @v29 = @Condition
If @ValueIndex = 30
Set @v30 = @Condition
If @ValueIndex = 31
Set @v31 = @Condition
If @ValueIndex = 32
Set @v32 = @Condition
If @ValueIndex = 33
Set @v33 = @Condition
If @ValueIndex = 34
Set @v34 = @Condition
If @ValueIndex = 35
Set @v35 = @Condition
If @ValueIndex = 36
Set @v36 = @Condition
If @ValueIndex = 37
Set @v37 = @Condition
If @ValueIndex = 38
Set @v38 = @Condition
If @ValueIndex = 39
Set @v39 = @Condition
If @ValueIndex = 40
Set @v40 = @Condition
If @ValueIndex = 41
Set @v41 = @Condition
If @ValueIndex = 42
Set @v42 = @Condition
If @ValueIndex = 43
Set @v43 = @Condition
If @ValueIndex = 44
Set @v44 = @Condition
If @ValueIndex = 45
Set @v45 = @Condition
If @ValueIndex = 46
Set @v46 = @Condition
If @ValueIndex = 47
Set @v47 = @Condition
If @ValueIndex = 48
Set @v48 = @Condition
If @ValueIndex = 49
Set @v49 = @Condition
If @ValueIndex = 50
Set @v50 = @Condition
If @HoldParm is null
Begin
Set @HoldParm = N''
If @ParmList <> N''
Set @ParmList += N', '
Set @ParsedFilter += N' @v' + Cast(@ValueIndex as Nvarchar(5))
Set @ParmList += N' @v' + Cast(@ValueIndex as Nvarchar(5)) + N' ' + N'Varchar(50)'
End
Else If @HoldParm = N''
Begin
/*If (@HoldKey <> 'BETWEEN' And @HoldKey <> 'IN') OR @HoldKey IS NULL
Begin
Print 'Filter clause is invlaid'
Break
End */
If @ParmList <> N''
Set @ParmList += N', '
Set @ParsedFilter += N' @v' + Cast(@ValueIndex as Nvarchar(5))
Set @ParmList += N' @v' + Cast(@ValueIndex as Nvarchar(5)) + N' ' + N'Varchar(50)'
End
Else
Begin
If @ParmList <> N''
Set @ParmList += N', '
Set @ParsedFilter += N' @v' + Cast(@ValueIndex as Nvarchar(5))
Set @ParmList += N' @v' + Cast(@ValueIndex as Nvarchar(5)) + N' ' + REPLACE(@HoldParm, '''', '') --Replace: Avoid AppScan scanning
If @HoldKey <> N'BETWEEN' And @HoldKey <> N'IN'
Set @HoldParm = null
End
Set @ValueIndex += 1
End
End
Close ConditionCusror
Deallocate ConditionCusror
-- print @ParmList
-- Print @ParsedFilter
SET @ParsedFilter = REPLACE(@ParsedFilter, '''', '') --Replace: Avoid AppScan scanning
If CHARINDEX(N'WHERE', @Before, 0) > 0 AND ISNULL(@ParsedFilter, N'') <> N''
Set @ParsedFilter = N' AND ' + @ParsedFilter
ELSE IF ISNULL(@ParsedFilter, N'') <> N''
Set @ParsedFilter = N' where ' + @ParsedFilter
Set @Sql = @Before + N' ' + ISNULL(@ParsedFilter, N'') + N' ' + @After
print @Sql
If @ValueIndex = 0
EXEC sp_executesql @Sql
If @ValueIndex = 1
EXEC sp_executesql @Sql, @ParmList, @v0
If @ValueIndex = 2
EXEC sp_executesql @Sql, @ParmList, @v0, @v1
If @ValueIndex = 3
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2
If @ValueIndex = 4
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3
If @ValueIndex = 5
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4
If @ValueIndex = 6
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5
If @ValueIndex = 7
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6
If @ValueIndex = 8
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7
If @ValueIndex = 9
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8
If @ValueIndex = 10
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9
If @ValueIndex = 11
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10
If @ValueIndex = 12
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11
If @ValueIndex = 13
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12
If @ValueIndex = 14
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13
If @ValueIndex = 15
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14
If @ValueIndex = 16
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15
If @ValueIndex = 17
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16
If @ValueIndex = 18
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17
If @ValueIndex = 19
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18
If @ValueIndex = 20
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19
If @ValueIndex = 21
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20
If @ValueIndex = 22
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21
If @ValueIndex = 23
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22
If @ValueIndex = 24
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23
If @ValueIndex = 25
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24
If @ValueIndex = 26
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25
If @ValueIndex = 27
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26
If @ValueIndex = 28
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27
If @ValueIndex = 29
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28
If @ValueIndex = 30
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29
If @ValueIndex = 31
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30
If @ValueIndex = 32
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31
If @ValueIndex = 33
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32
If @ValueIndex = 34
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33
If @ValueIndex = 35
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34
If @ValueIndex = 36
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35
If @ValueIndex = 37
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35, @v36
If @ValueIndex = 38
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35, @v36, @v37
If @ValueIndex = 39
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35, @v36, @v37, @v38
If @ValueIndex = 40
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35, @v36, @v37, @v38, @v39
If @ValueIndex = 41
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35, @v36, @v37, @v38, @v39, @v40
If @ValueIndex = 42
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35, @v36, @v37, @v38, @v39, @v40, @v41
If @ValueIndex = 43
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35, @v36, @v37, @v38, @v39, @v40, @v41, @v42
If @ValueIndex = 44
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35, @v36, @v37, @v38, @v39, @v40, @v41, @v42, @v43
If @ValueIndex = 45
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35, @v36, @v37, @v38, @v39, @v40, @v41, @v42, @v43, @v44
If @ValueIndex = 46
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35, @v36, @v37, @v38, @v39, @v40, @v41, @v42, @v43, @v44, @v45
If @ValueIndex = 47
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35, @v36, @v37, @v38, @v39, @v40, @v41, @v42, @v43, @v44, @v45, @v46
If @ValueIndex = 48
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35, @v36, @v37, @v38, @v39, @v40, @v41, @v42, @v43, @v44, @v45, @v46, @v47
If @ValueIndex = 49
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35, @v36, @v37, @v38, @v39, @v40, @v41, @v42, @v43, @v44, @v45, @v46, @v47, @v48
If @ValueIndex = 50
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35, @v36, @v37, @v38, @v39, @v40, @v41, @v42, @v43, @v44, @v45, @v46, @v47, @v48, @v49
If @ValueIndex = 51
EXEC sp_executesql @Sql, @ParmList, @v0, @v1, @v2, @v3, @v4, @v5, @v6, @v7, @v8, @v9, @v10, @v11, @v12, @v13, @v14, @v15, @v16, @V17, @v18, @v19, @v20, @v21, @v22, @v23, @v24, @v25, @v26, @v27, @v28, @v29, @v30, @v31, @v32, @v33, @v34, @v35, @v36, @v37, @v38, @v39, @v40, @v41, @v42, @v43, @v44, @v45, @v46, @v47, @v48, @v49, @v50
Return
End
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
No comments:
Post a Comment