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
以上。