我运行了sql server profiler,对于一个sql statemnt,我可以看到以下脚本:
declare @p9 varchar(8000)
set @p9=NULL
declare @p10 smallint
set @p10=default
declare @p11 bit
set @p11=default
declare @p12 int
set @p12=default
exec spgConfigValue @FullKey='System|MessageLog|Record|SSRS',@Key1=default,@Key2=default,@Key3=default,@Key4=default,@Key5=default,@DataType=default,@DefaultValue='True',@Value=@p9 output,@RecordExistsFlag=@p10 output,@ValueBit=@p11 output,@ValueInt=@p12 output,@PortalStudentID=default,@PortalUserID=default
select @p9, @p10, @p11, @p12
这个问题只是出于好奇。我可以从概念上理解在上下文中设置@ p10 =默认均值。我认为这意味着因为在该输出参数的应用程序中执行proc时没有设置值,只需使用该参数的proc中的默认值。我不明白的是这个脚本的编写方式。如果您在管理工作室内运行整个脚本,则会在关键字“default”附近生成错误语法错误。 那么这里发生了什么?在这种情况下,SQL Server生成的只是一个sudo代码,而实际的代码是其他东西,或者这实际上是以某种方式在SQLServer执行引擎中运行的代码?
答案 0 :(得分:0)
使用RPC请求,您在探查器跟踪中看到的批处理文本实际上是从TDS协议流反向设计的,而不是应用程序发送的实际批处理文本。你是对的,这基本上是伪代码,在这种情况下,语法不能作为临时查询执行。