У меня есть следующие коды 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
....
Я использую значение имени только в блоке цикла. Здесь я должен
- определить переменную курсора,
- открой его,
- получить дважды и
- закройте его.
В PL / SQL цикл может выглядеть следующим образом:
FOR rRec IN (SELECT name FROM employees) LOOP
DBMS_OUTPUT.put_line(rRec.name);
END LOOP;
Это намного проще, чем мои коды TSQL. Нет необходимости определять курсор. Он создается динамически, который доступен внутри блока цикла (очень похоже на цикл C # for). Не уверен, есть ли что-то подобное в TSQL?