単純なselectステートメントを含むストアドプロシージャがあります。
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がコンパイル済みコードに異なる実行プランを使用しているため、SQLStudioManagerで実行されているコードとの比較であると確信しています。でもチェックしたかった。