为什么sp_executesql在直接SP调用时不返回结果?

时间:2011-11-17 06:43:31

标签: c# sql sql-server tsql

这令人困惑。对于存储过程的声明:

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'

任何人都可以解释原因吗?

1 个答案:

答案 0 :(得分:3)

调用SP时,需要将@jobGuid添加为参数。如果没有它,参数将具有默认值NULL

exec sp_executesql N'dbo.JobGet @jobGuid',
                   N'@jobGuid uniqueidentifier',
                   @jobGuid='BDEA1E43-9EC7-42B0-A386-903FE1749FF7'