T-SQLで、カーソルSELECT、フェッチからのループ

■処理概要
従業員データが格納されたEmployeeテーブルを使って
パラメーターとして渡されたマネージャーコード(@MngID)に関連付けられた
従業員とその職種の一覧を出力する

※データは、AdventureWorks2014を使用

CREATE procedure uspSample5 @MngID int AS

/* 変数リストの宣言 */
DECLARE @FirstName nvarchar(50)
DECLARE @LastName  nvarchar(50)
DECLARE @Title     nvarchar(50)

/* カーソルの宣言 */
DECLARE EmpCur CURSOR FOR
SELECT cnt.FirstName,cnt.LastName,emp.JobTitle
    FROM HumanResources.Employee AS emp INNER JOIN Person.Person AS cnt
    ON emp.BusinessEntityID = cnt.BusinessEntityID WHERE emp.OrganizationLevel = @MngID

/* カーソルを開く */
OPEN EmpCur

/* 行の取り出し */
FETCH NEXT FROM EmpCur INTO @FirstName,@LastName,@Title

/* ループ処理 */
WHILE (@@FETCH_STATUS = 0)
BEGIN
    /* 変数リストの値の出力 */
    PRINT @FirstName + ' ' + @LastName + ' ' + @Title
    /* 行の取り出し */
    FETCH NEXT FROM EmpCur INTO @FirstName,@LastName,@Title
END

/* カーソルを閉じる */
CLOSE EmpCur
DEALLOCATE EmpCur

RETURN

以上。