我有一个存储过程,其中包含一个简单的选择语句:
ALTER PROCEDURE [dbo].[TransferAuditRecords]
As
SET NOCOUNT ON
SET XACT_ABORT ON
Declare @UserCode As varchar(50)
DECLARE AuditCursor CURSOR FOR
select top 1 UserCode from [AuditDatabaseServer].AuditDatabase.dbo.dbaudit where auditdate >= '2012-09-04'
Open AuditCursor
FETCH NEXT FROM AuditCursor INTO @UserCode
WHILE @@FETCH_STATUS = 0
BEGIN
Print @Usercode
FETCH NEXT FROM AuditCursor INTO @UserCode
END
Close AuditCursor
Deallocate AuditCursor
缺少几行代码,我将其排除在外,因为它们与问题无关。
如果我在没有存储过程的情况下执行 SQL 语句,即在 SQL Studio Manager 2005 中,那么我得到的输出与我运行存储过程不同,即返回的顶部引用不同。为什么输出不同?
我相当确定这是因为 SQL Server 对编译代码使用不同的执行计划,这与 SQL Studio Manager 中运行的代码进行了比较。我想检查一下。