为什么sp_executesql在直接SP调用时不返回结果?
问题描述:
这是令人困惑的。对于此声明的存储过程:为什么sp_executesql在直接SP调用时不返回结果?
CREATE PROCEDURE dbo.JobGet
@jobGuid uniqueidentifier = NULL,
此行返回的结果:
exec dbo.JobGet @jobGuid ='BDEA1E43-9EC7-42B0-A386-903FE1749FF7'
而这一次没有:
exec sp_executesql N'dbo.JobGet',N'@jobGuid uniqueidentifier',@jobGuid='BDEA1E43-9EC7-42B0-A386-903FE1749FF7'
任何人都可以解释,为什么?
答
您需要@jobGuid添加作为参数,当你调用SP。没有它,参数将具有默认值NULL
。
exec sp_executesql N'dbo.JobGet @jobGuid',
N'@jobGuid uniqueidentifier',
@jobGuid='BDEA1E43-9EC7-42B0-A386-903FE1749FF7'
你有喜!谢谢!问题是我在跟踪C#代码后从Perf Profiler中获取它。并且该参数不存在的原因是因为我没有指定'CommandType'为'StoredProcedure'。所以它默认为“文本”,因此直接按照规定使用它。男人!浪费了一小时这样一件小事。再次感谢。 – Schultz9999