@@ -3086,7 +3086,7 @@ OPTION (RECOMPILE);
30863086IF EXISTS ( SELECT 1
30873087 FROM ##bou_BlitzCacheProcs AS bbcp
30883088 WHERE bbcp .implicit_conversions = 1
3089- OR bbcp .QueryType LIKE ' Procedure or Function:%' )
3089+ OR bbcp .QueryType LIKE ' % Procedure or Function: %' )
30903090BEGIN
30913091
30923092RAISERROR (N ' Getting information about implicit conversions and stored proc parameters' , 0 , 1 ) WITH NOWAIT ;
@@ -3105,7 +3105,8 @@ SELECT DISTINCT @@SPID,
31053105 q .n .value (' @ParameterCompiledValue' , ' NVARCHAR(1000)' ) AS compile_time_value
31063106FROM #query_plan AS qp
31073107JOIN ##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 )
31093110CROSS APPLY qp .query_plan .nodes (' //p:QueryPlan/p:ParameterList/p:ColumnReference' ) AS q(n)
31103111WHERE b .SPID = @@SPID
31113112OPTION ( RECOMPILE );
@@ -3122,7 +3123,8 @@ SELECT DISTINCT @@SPID,
31223123 qq .c .value (' @Expression' , ' NVARCHAR(128)' ) AS expression
31233124FROM #query_plan AS qp
31243125JOIN ##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 )
31263128CROSS APPLY qp .query_plan .nodes (' //p:QueryPlan/p:Warnings/p:PlanAffectingConvert' ) AS qq(c)
31273129WHERE qq .c .exist(' @ConvertIssue[.="Seek Plan"]' ) = 1
31283130 AND qp .QueryHash IS NOT NULL
@@ -3175,15 +3177,32 @@ SELECT @@SPID AS SPID,
31753177FROM #conversion_info AS ci
31763178OPTION ( RECOMPILE );
31773179
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
31873206
31883207RAISERROR (N ' Updating procs' , 0 , 1 ) WITH NOWAIT ;
31893208UPDATE s
@@ -3201,6 +3220,9 @@ SET s.variable_datatype = CASE WHEN s.variable_datatype LIKE '%(%)%' THEN
32013220 CHARINDEX (' )' , s .compile_time_value ) - 1
32023221 - CHARINDEX (' (' , s .compile_time_value )
32033222 )
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, ' '' ' )
32043226 ELSE s .compile_time_value
32053227 END
32063228FROM #stored_proc_info AS s
0 commit comments