Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Пример 8-1.
- Да се създаде курсор, който демонстрира прочитане на данни ред по ред от
- курсор. Резултатният набор за целта ще съдържа всички клиенти от Германия.
- Стъпките от жизнения цикъл са обозначени в коментари.*/
- DECLARE @CUST_ID VARCHAR(10), @F_NAME VARCHAR(20), @L_NAME VARCHAR(20)
- -- 1 Деклариране на курсора чрез конструкцията DECLARE
- DECLARE CUSTOMERS_CURSOR CURSOR FOR
- SELECT CUSTOMER_ID, FNAME, LNAME
- FROM CUSTOMERS
- WHERE COUNTRY_ID = 'DE'
- -- 2. Отваряне на курсора.
- OPEN CUSTOMERS_CURSOR
- /* 3. Извличане на ред от курсора чрез конструкцията FETCH.
- Това обикновено става в цикъл, в който на всяка итерация се проверява
- стойността на системната променлива @@FETCH_STATUS след всяко извличане.
- Ако стойността й е:
- 0 – извличането е било успешно;
- -1 – няма повече редове в курсора;
- -2 – редът вече не съществува в курсора, т.е.
- той е бил изтрит след отваряне на
- курсора или променен така, че вече не отговаря на условията,
- на които отговарят редовете, участващи в резултатния набор на курсора.
- */
- FETCH NEXT FROM CUSTOMERS_CURSOR INTO @CUST_ID, @F_NAME, @L_NAME
- PRINT 'Клиенти от Германия: '
- PRINT '-----------------------------'
- WHILE @@FETCH_STATUS = 0
- BEGIN
- -- 4. Прочитане, актуализиране или изтриване на реда, на който е позициониран курсорът.
- PRINT @F_NAME + ' ' + @L_NAME + ' (ID = ' + @CUST_ID + ')'
- FETCH NEXT FROM CUSTOMERS_CURSOR INTO @CUST_ID, @F_NAME, @L_NAME
- END
- -- 5. Затваряне на курсора. Това прекратява активното действие на курсора. Той все още
- --може да бъде отворен без да се налага да се декларира отново.
- CLOSE CUSTOMERS_CURSOR
- -- 6. Освобождаване на курсора, за да бъдат освободени структурите от данни, които
- --съставят курсора.
- DEALLOCATE CUSTOMERS_CURSOR
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement