@@ -778,9 +778,7 @@ CREATE TABLE #stored_proc_info
778778 compile_time_value NVARCHAR (128 ),
779779 proc_name NVARCHAR (300 ),
780780 column_name NVARCHAR (128 ),
781-  converted_to NVARCHAR (128 ),
782- 	parameterization_type INT ,
783- 	optimization_level VARCHAR (100 ),
781+  converted_to NVARCHAR (128 )
784782	INDEX  tf_ix_ids CLUSTERED  (sql_handle , query_hash)
785783);
786784
@@ -2969,8 +2967,9 @@ IF EXISTS ( SELECT 1
29692967		 q .n .value (' @ParameterDataType'' NVARCHAR(128)'AS  variable_datatype,
29702968		 q .n .value (' @ParameterCompiledValue'' NVARCHAR(1000)'AS  compile_time_value
29712969		FROM  #query_plan AS  qp
2972-  JOIN  #working_warnings AS  b
2973-  ON  b .query_hash  =  qp .query_hash 
2970+  JOIN  #working_warnings AS  b
2971+  ON  (b .query_hash  =  qp .query_hash  AND  b .proc_or_function_name  =  ' adhoc'
2972+ 		 OR  (b .sql_handle  =  qp .sql_handle  AND  b .proc_or_function_name  <>  ' adhoc'
29742973		CROSS  APPLY  qp .query_plan .nodes (' //p:QueryPlan/p:ParameterList/p:ColumnReference'AS  q(n)
29752974		OPTION  ( RECOMPILE  );
29762975
@@ -2983,8 +2982,9 @@ IF EXISTS ( SELECT 1
29832982		 b .proc_or_function_name  AS  proc_name,
29842983		 qq .c .value (' @Expression'' NVARCHAR(128)'AS  expression
29852984		FROM  #query_plan AS  qp
2986-  JOIN  #working_warnings AS  b
2987-  ON  b .query_hash  =  qp .query_hash 
2985+ 		 JOIN  #working_warnings AS  b
2986+  ON  (b .query_hash  =  qp .query_hash  AND  b .proc_or_function_name  =  ' adhoc'
2987+ 		 OR  (b .sql_handle  =  qp .sql_handle  AND  b .proc_or_function_name  <>  ' adhoc'
29882988		CROSS  APPLY  qp .query_plan .nodes (' //p:QueryPlan/p:Warnings/p:PlanAffectingConvert'AS  qq(c)
29892989		WHERE  qq .c .exist(' @ConvertIssue[.="Seek Plan"]'=  1 
29902990		 AND  b .implicit_conversions  =  1 
@@ -3034,15 +3034,32 @@ IF EXISTS ( SELECT 1
30343034		FROM  #conversion_info AS  ci
30353035		OPTION  ( RECOMPILE  );
30363036
3037- 		RAISERROR (N ' Updating variables'0 , 1 ) WITH  NOWAIT ;
3038- 		UPDATE  sp
3039- 		SET  sp .variable_datatype  =  vi .variable_datatype ,
3040- 			sp .compile_time_value  =  vi .compile_time_value 
3041- 		FROM  #stored_proc_info AS  sp
3042- 		JOIN  #variable_info AS  vi
3043- 		ON  sp .query_hash  =  vi .query_hash 
3044- 		AND  sp .variable_name  =  vi .variable_name 
3045- 		OPTION  ( RECOMPILE  );
3037+ 		IF  EXISTS  (	SELECT  *  
3038+ 					FROM  #stored_proc_info AS  sp
3039+ 					JOIN  #variable_info AS  vi
3040+ 					ON  (sp .proc_name  =  ' adhoc'AND  sp .query_hash  =  vi .query_hash )
3041+ 					OR  	(sp .proc_name  <>  ' adhoc'AND  sp .sql_handle  =  vi .sql_handle )
3042+ 					AND  sp .variable_name  =  vi .variable_name  )
3043+ 			BEGIN 
3044+ 				RAISERROR (N ' Updating variables'0 , 1 ) WITH  NOWAIT ;
3045+ 				UPDATE  sp
3046+ 				SET  sp .variable_datatype  =  vi .variable_datatype ,
3047+ 					sp .compile_time_value  =  vi .compile_time_value 
3048+ 				FROM  #stored_proc_info AS  sp
3049+ 				JOIN  #variable_info AS  vi
3050+ 				ON  (sp .proc_name  =  ' adhoc'AND  sp .query_hash  =  vi .query_hash )
3051+ 				OR  	(sp .proc_name  <>  ' adhoc'AND  sp .sql_handle  =  vi .sql_handle )
3052+ 				AND  sp .variable_name  =  vi .variable_name 
3053+ 				OPTION  ( RECOMPILE  );
3054+ 			END 
3055+ 			ELSE 
3056+ 			BEGIN 
3057+ 				RAISERROR (N ' Inserting variables'0 , 1 ) WITH  NOWAIT ;
3058+ 				INSERT  #stored_proc_info ( sql_handle , query_hash, variable_name, variable_datatype, compile_time_value, proc_name )
3059+ 				SELECT  vi .sql_handle , vi .query_hash , vi .variable_name , vi .variable_datatype , vi .compile_time_value , vi .proc_name 
3060+ 				FROM  #variable_info AS  vi
3061+ 				OPTION  ( RECOMPILE  );
3062+ 			END 
30463063
30473064		RAISERROR (N ' Updating procs'0 , 1 ) WITH  NOWAIT ;
30483065		UPDATE  s
@@ -3060,7 +3077,10 @@ IF EXISTS ( SELECT 1
30603077															CHARINDEX (' )'s .compile_time_value ) -  1 
30613078															-  CHARINDEX (' ('s .compile_time_value )
30623079															)
3063- 											ELSE  s .compile_time_value  
3080+ 											WHEN  variable_datatype NOT  IN  (' bit'' tinyint'' smallint'' int'' bigint'
3081+ 											AND  s .variable_datatype  NOT  LIKE  ' %binary%'THEN 
3082+ 											QUOTENAME (compile_time_value, ' '' '
3083+ 									 ELSE  s .compile_time_value  
30643084									 END 
30653085		FROM  #stored_proc_info AS  s
30663086		OPTION (RECOMPILE );
0 commit comments