@@ -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