@@ -1147,9 +1147,7 @@ CREATE TABLE #stored_proc_info
11471147 compile_time_value NVARCHAR (128 ),
11481148 proc_name NVARCHAR (300 ),
11491149 column_name NVARCHAR (128 ),
1150-  converted_to NVARCHAR (128 ),
1151- 	parameterization_type INT ,
1152- 	optimization_level VARCHAR (100 )
1150+  converted_to NVARCHAR (128 )
11531151);
11541152
11551153CREATE  TABLE  #plan_creation
@@ -3086,7 +3084,7 @@ OPTION (RECOMPILE);
30863084IF  EXISTS  ( SELECT  1  
30873085			FROM  ##bou_BlitzCacheProcs AS  bbcp 
30883086			WHERE  bbcp .implicit_conversions  =  1  
3089- 			OR  bbcp .QueryType  LIKE  ' Procedure or Function:%'
3087+ 			OR  bbcp .QueryType  LIKE  ' % Procedure or Function:%'
30903088BEGIN 
30913089
30923090RAISERROR (N ' Getting information about implicit conversions and stored proc parameters'0 , 1 ) WITH  NOWAIT ;
@@ -3105,7 +3103,8 @@ SELECT DISTINCT @@SPID,
31053103 q .n .value (' @ParameterCompiledValue'' NVARCHAR(1000)'AS  compile_time_value
31063104FROM  #query_plan AS  qp
31073105JOIN  ##bou_BlitzCacheProcs AS  b
3108- ON  b .QueryHash  =  qp .QueryHash 
3106+ ON  (b .QueryType  =  ' adhoc'AND  b .QueryHash  =  qp .QueryHash )
3107+ OR  	(b .QueryType  <>  ' adhoc'AND  b .SqlHandle  =  qp .SqlHandle )
31093108CROSS  APPLY  qp .query_plan .nodes (' //p:QueryPlan/p:ParameterList/p:ColumnReference'AS  q(n)
31103109WHERE  b .SPID  =  @@SPID 
31113110OPTION  ( RECOMPILE  );
@@ -3122,7 +3121,8 @@ SELECT DISTINCT @@SPID,
31223121 qq .c .value (' @Expression'' NVARCHAR(128)'AS  expression
31233122FROM  #query_plan AS  qp
31243123JOIN  ##bou_BlitzCacheProcs AS  b
3125- ON  b .QueryHash  =  qp .QueryHash 
3124+ ON  (b .QueryType  =  ' adhoc'AND  b .QueryHash  =  qp .QueryHash )
3125+ OR  	(b .QueryType  <>  ' adhoc'AND  b .SqlHandle  =  qp .SqlHandle )
31263126CROSS  APPLY  qp .query_plan .nodes (' //p:QueryPlan/p:Warnings/p:PlanAffectingConvert'AS  qq(c)
31273127WHERE  qq .c .exist(' @ConvertIssue[.="Seek Plan"]'=  1 
31283128 AND  qp .QueryHash  IS  NOT  NULL 
@@ -3175,15 +3175,32 @@ SELECT @@SPID AS SPID,
31753175FROM  #conversion_info AS  ci
31763176OPTION  ( RECOMPILE  );
31773177
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  );
3178+ IF  EXISTS  (	SELECT  *  
3179+ 			FROM  #stored_proc_info AS  sp
3180+ 			JOIN  #variable_info AS  vi
3181+ 			ON  (sp .proc_name  =  ' adhoc'AND  sp .QueryHash  =  vi .QueryHash )
3182+ 			OR  	(sp .proc_name  <>  ' adhoc'AND  sp .SqlHandle  =  vi .SqlHandle )
3183+ 			AND  sp .variable_name  =  vi .variable_name  )
3184+ 	BEGIN 
3185+ 		RAISERROR (N ' Updating variables'0 , 1 ) WITH  NOWAIT ;
3186+ 		UPDATE  sp
3187+ 		SET  sp .variable_datatype  =  vi .variable_datatype ,
3188+ 			sp .compile_time_value  =  vi .compile_time_value 
3189+ 		FROM  #stored_proc_info AS  sp
3190+ 		JOIN  #variable_info AS  vi
3191+ 		ON  (sp .proc_name  =  ' adhoc'AND  sp .QueryHash  =  vi .QueryHash )
3192+ 		OR  	(sp .proc_name  <>  ' adhoc'AND  sp .SqlHandle  =  vi .SqlHandle )
3193+ 		AND  sp .variable_name  =  vi .variable_name 
3194+ 		OPTION  ( RECOMPILE  );
3195+ 	END 
3196+ 	ELSE 
3197+ 	BEGIN 
3198+ 		RAISERROR (N ' Inserting variables'0 , 1 ) WITH  NOWAIT ;
3199+ 		INSERT  #stored_proc_info ( SPID, SqlHandle, QueryHash, variable_name, variable_datatype, compile_time_value, proc_name )
3200+ 		SELECT  vi .SPID , vi .SqlHandle , vi .QueryHash , vi .variable_name , vi .variable_datatype , vi .compile_time_value , vi .proc_name 
3201+ 		FROM  #variable_info AS  vi
3202+ 		OPTION  ( RECOMPILE  );
3203+ 	END 
31873204
31883205RAISERROR (N ' Updating procs'0 , 1 ) WITH  NOWAIT ;
31893206UPDATE  s
@@ -3201,6 +3218,9 @@ SET s.variable_datatype = CASE WHEN s.variable_datatype LIKE '%(%)%' THEN
32013218													CHARINDEX (' )'s .compile_time_value ) -  1 
32023219													-  CHARINDEX (' ('s .compile_time_value )
32033220													)
3221+ 									WHEN  variable_datatype NOT  IN  (' bit'' tinyint'' smallint'' int'' bigint'
3222+ 										AND  s .variable_datatype  NOT  LIKE  ' %binary%'THEN 
3223+ 										QUOTENAME (compile_time_value, ' '' '
32043224									ELSE  s .compile_time_value  
32053225							 END 
32063226FROM  #stored_proc_info AS  s
0 commit comments