Advertisement
S_Madanska

CURSOR

Nov 5th, 2021 (edited)
1,167
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*Пример 8-1.
  2. Да се създаде курсор, който демонстрира прочитане на данни ред по ред от
  3. курсор. Резултатният набор за целта ще съдържа всички клиенти от Германия.
  4. Стъпките от жизнения цикъл са обозначени в коментари.*/
  5.  
  6. DECLARE @CUST_ID VARCHAR(10), @F_NAME VARCHAR(20), @L_NAME VARCHAR(20)
  7.  
  8. -- 1 Деклариране на курсора чрез конструкцията DECLARE
  9. DECLARE CUSTOMERS_CURSOR CURSOR FOR
  10. SELECT CUSTOMER_ID, FNAME, LNAME
  11. FROM CUSTOMERS
  12. WHERE COUNTRY_ID = 'DE'
  13.  
  14. -- 2. Отваряне на курсора.
  15. OPEN CUSTOMERS_CURSOR
  16.  
  17. /* 3. Извличане на ред от курсора чрез конструкцията FETCH.
  18. Това обикновено става в цикъл, в който на всяка итерация се проверява
  19. стойността на системната променлива @@FETCH_STATUS след всяко извличане.
  20. Ако стойността й е:
  21.           0 – извличането е било успешно;
  22.          -1 – няма повече редове в курсора;
  23.          -2 – редът вече не съществува в курсора, т.е.
  24.             той е бил изтрит след отваряне на
  25.             курсора или променен така, че вече не отговаря на условията,
  26.             на които отговарят редовете, участващи в резултатния набор на курсора.
  27. */         
  28. FETCH NEXT FROM CUSTOMERS_CURSOR INTO @CUST_ID, @F_NAME, @L_NAME
  29. PRINT 'Клиенти от Германия: '
  30. PRINT '-----------------------------'
  31. WHILE @@FETCH_STATUS = 0
  32. BEGIN
  33.  
  34. -- 4. Прочитане, актуализиране или изтриване на реда, на който е позициониран курсорът.
  35.  PRINT @F_NAME + ' ' + @L_NAME + ' (ID = ' + @CUST_ID + ')'
  36.  
  37.  FETCH NEXT FROM CUSTOMERS_CURSOR INTO @CUST_ID, @F_NAME, @L_NAME
  38. END
  39.  
  40. -- 5. Затваряне на курсора. Това прекратява активното действие на курсора. Той все още
  41. --може да бъде отворен без да се налага да се декларира отново.
  42. CLOSE CUSTOMERS_CURSOR
  43.  
  44. -- 6. Освобождаване на курсора, за да бъдат освободени структурите от данни, които
  45. --съставят курсора.
  46. DEALLOCATE CUSTOMERS_CURSOR
Advertisement
RAW Paste Data Copied
Advertisement