@@ -778,9 +778,7 @@ CREATE TABLE #stored_proc_info
778
778
compile_time_value NVARCHAR (128 ),
779
779
proc_name NVARCHAR (300 ),
780
780
column_name NVARCHAR (128 ),
781
- converted_to NVARCHAR (128 ),
782
- parameterization_type INT ,
783
- optimization_level VARCHAR (100 ),
781
+ converted_to NVARCHAR (128 )
784
782
INDEX tf_ix_ids CLUSTERED (sql_handle , query_hash)
785
783
);
786
784
@@ -2969,8 +2967,9 @@ IF EXISTS ( SELECT 1
2969
2967
q .n .value (' @ParameterDataType' , ' NVARCHAR(128)' ) AS variable_datatype,
2970
2968
q .n .value (' @ParameterCompiledValue' , ' NVARCHAR(1000)' ) AS compile_time_value
2971
2969
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' )
2974
2973
CROSS APPLY qp .query_plan .nodes (' //p:QueryPlan/p:ParameterList/p:ColumnReference' ) AS q(n)
2975
2974
OPTION ( RECOMPILE );
2976
2975
@@ -2983,8 +2982,9 @@ IF EXISTS ( SELECT 1
2983
2982
b .proc_or_function_name AS proc_name,
2984
2983
qq .c .value (' @Expression' , ' NVARCHAR(128)' ) AS expression
2985
2984
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' )
2988
2988
CROSS APPLY qp .query_plan .nodes (' //p:QueryPlan/p:Warnings/p:PlanAffectingConvert' ) AS qq(c)
2989
2989
WHERE qq .c .exist(' @ConvertIssue[.="Seek Plan"]' ) = 1
2990
2990
AND b .implicit_conversions = 1
@@ -3034,15 +3034,32 @@ IF EXISTS ( SELECT 1
3034
3034
FROM #conversion_info AS ci
3035
3035
OPTION ( RECOMPILE );
3036
3036
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
3046
3063
3047
3064
RAISERROR (N ' Updating procs' , 0 , 1 ) WITH NOWAIT ;
3048
3065
UPDATE s
@@ -3060,7 +3077,10 @@ IF EXISTS ( SELECT 1
3060
3077
CHARINDEX (' )' , s .compile_time_value ) - 1
3061
3078
- CHARINDEX (' (' , s .compile_time_value )
3062
3079
)
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
3064
3084
END
3065
3085
FROM #stored_proc_info AS s
3066
3086
OPTION (RECOMPILE );
0 commit comments