@@ -3086,7 +3086,7 @@ OPTION (RECOMPILE);
3086
3086
IF EXISTS ( SELECT 1
3087
3087
FROM ##bou_BlitzCacheProcs AS bbcp
3088
3088
WHERE bbcp .implicit_conversions = 1
3089
- OR bbcp .QueryType LIKE ' Procedure or Function:%' )
3089
+ OR bbcp .QueryType LIKE ' % Procedure or Function: %' )
3090
3090
BEGIN
3091
3091
3092
3092
RAISERROR (N ' Getting information about implicit conversions and stored proc parameters' , 0 , 1 ) WITH NOWAIT ;
@@ -3105,7 +3105,8 @@ SELECT DISTINCT @@SPID,
3105
3105
q .n .value (' @ParameterCompiledValue' , ' NVARCHAR(1000)' ) AS compile_time_value
3106
3106
FROM #query_plan AS qp
3107
3107
JOIN ##bou_BlitzCacheProcs AS b
3108
- ON b .QueryHash = qp .QueryHash
3108
+ ON (b .QueryType = ' adhoc' AND b .QueryHash = qp .QueryHash )
3109
+ OR (b .QueryType <> ' adhoc' AND b .SqlHandle = qp .SqlHandle )
3109
3110
CROSS APPLY qp .query_plan .nodes (' //p:QueryPlan/p:ParameterList/p:ColumnReference' ) AS q(n)
3110
3111
WHERE b .SPID = @@SPID
3111
3112
OPTION ( RECOMPILE );
@@ -3122,7 +3123,8 @@ SELECT DISTINCT @@SPID,
3122
3123
qq .c .value (' @Expression' , ' NVARCHAR(128)' ) AS expression
3123
3124
FROM #query_plan AS qp
3124
3125
JOIN ##bou_BlitzCacheProcs AS b
3125
- ON b .QueryHash = qp .QueryHash
3126
+ ON (b .QueryType = ' adhoc' AND b .QueryHash = qp .QueryHash )
3127
+ OR (b .QueryType <> ' adhoc' AND b .SqlHandle = qp .SqlHandle )
3126
3128
CROSS APPLY qp .query_plan .nodes (' //p:QueryPlan/p:Warnings/p:PlanAffectingConvert' ) AS qq(c)
3127
3129
WHERE qq .c .exist(' @ConvertIssue[.="Seek Plan"]' ) = 1
3128
3130
AND qp .QueryHash IS NOT NULL
@@ -3175,15 +3177,32 @@ SELECT @@SPID AS SPID,
3175
3177
FROM #conversion_info AS ci
3176
3178
OPTION ( RECOMPILE );
3177
3179
3178
- RAISERROR (N ' Updating variables' , 0 , 1 ) WITH NOWAIT ;
3179
- UPDATE sp
3180
- SET sp .variable_datatype = vi .variable_datatype ,
3181
- sp .compile_time_value = vi .compile_time_value
3182
- FROM #stored_proc_info AS sp
3183
- JOIN #variable_info AS vi
3184
- ON sp .QueryHash = vi .QueryHash
3185
- AND sp .variable_name = vi .variable_name
3186
- OPTION ( RECOMPILE );
3180
+ IF EXISTS ( SELECT *
3181
+ FROM #stored_proc_info AS sp
3182
+ JOIN #variable_info AS vi
3183
+ ON (sp .proc_name = ' adhoc' AND sp .QueryHash = vi .QueryHash )
3184
+ OR (sp .proc_name <> ' adhoc' AND sp .SqlHandle = vi .SqlHandle )
3185
+ AND sp .variable_name = vi .variable_name )
3186
+ BEGIN
3187
+ RAISERROR (N ' Updating variables' , 0 , 1 ) WITH NOWAIT ;
3188
+ UPDATE sp
3189
+ SET sp .variable_datatype = vi .variable_datatype ,
3190
+ sp .compile_time_value = vi .compile_time_value
3191
+ FROM #stored_proc_info AS sp
3192
+ JOIN #variable_info AS vi
3193
+ ON (sp .proc_name = ' adhoc' AND sp .QueryHash = vi .QueryHash )
3194
+ OR (sp .proc_name <> ' adhoc' AND sp .SqlHandle = vi .SqlHandle )
3195
+ AND sp .variable_name = vi .variable_name
3196
+ OPTION ( RECOMPILE );
3197
+ END
3198
+ ELSE
3199
+ BEGIN
3200
+ RAISERROR (N ' Inserting variables' , 0 , 1 ) WITH NOWAIT ;
3201
+ INSERT #stored_proc_info ( SPID, SqlHandle, QueryHash, variable_name, variable_datatype, compile_time_value, proc_name )
3202
+ SELECT vi .SPID , vi .SqlHandle , vi .QueryHash , vi .variable_name , vi .variable_datatype , vi .compile_time_value , vi .proc_name
3203
+ FROM #variable_info AS vi
3204
+ OPTION ( RECOMPILE );
3205
+ END
3187
3206
3188
3207
RAISERROR (N ' Updating procs' , 0 , 1 ) WITH NOWAIT ;
3189
3208
UPDATE s
@@ -3201,6 +3220,9 @@ SET s.variable_datatype = CASE WHEN s.variable_datatype LIKE '%(%)%' THEN
3201
3220
CHARINDEX (' )' , s .compile_time_value ) - 1
3202
3221
- CHARINDEX (' (' , s .compile_time_value )
3203
3222
)
3223
+ WHEN variable_datatype NOT IN (' bit' , ' tinyint' , ' smallint' , ' int' , ' bigint' )
3224
+ AND s .variable_datatype NOT LIKE ' %binary%' THEN
3225
+ QUOTENAME (compile_time_value, ' '' ' )
3204
3226
ELSE s .compile_time_value
3205
3227
END
3206
3228
FROM #stored_proc_info AS s
0 commit comments