私は、次のTSQLコードを持っている:TSQLのブロックで動的カーソルが使用されていますか?
-- 1. define a cursor
DECLARE c_Temp CURSOR FOR
SELECT name FROM employees;
DECLARE @name varchar(100);
-- 2. open it
OPEN c_Temp;
-- 3. first fetch
FETCH NEXT FROM c_Temp INTO @name;
WHILE @@FETCH_STATUS = 0
BEGIN
print @name;
FETCH NEXT FROM c_Temp INTO @name; -- fetch again in a loop
END
-- 4. close it
....
私はループブロック内の名前値を使用します。ここで私は1)カーソル変数を定義し、2)それを開き、3)2回フェッチし、4)それを閉じなければなりません。 PL/SQLでは、ループは次のようになります。
FOR rRec IN (SELECT name FROM employees) LOOP
DBMS_OUTPUT.put_line(rRec.name);
END LOOP;
これは私のTSQLコードよりもずっと簡単です。カーソルを定義する必要はありません。ループブロック内でアクセス可能な動的に作成されます(C#forループのように)。 TSQLにこれと似たようなものがあるのかどうか分かりませんか?それはあなたがカーソルが頻繁に使用されているOracleのバックグラウンドから来ているので、あなたがないかもしれID列または他のいくつかのユニークな識別子
Declare @au_id Varchar(20) Select @au_id = Min(au_id) from authors While @au_id IS NOT NULL Begin Select au_id, au_lname, au_fname from authors Where au_id = @au_id Select @au_id = min(au_id) from authors where au_id > @au_id End
私はMicrosoft SQL Server 2005を使用しています –