Методические указания по их использованию. Пособие содержит большое количество примеров на использование операторов sql, которые могут быть полезны как на этапе освоения материала, так и выступать в качестве вопросов для самопроверки


WITH myRecursiveCTE(col1, col2, ... coln)



Download 441,57 Kb.
bet58/71
Sana15.01.2023
Hajmi441,57 Kb.
#899634
TuriМетодические указания
1   ...   54   55   56   57   58   59   60   61   ...   71
Bog'liq
Методичка SQL(14) (оптимизация)

WITH
myRecursiveCTE(col1, col2, ... coln)
AS
( -- Anchor Member Query
UNION ALL
-- Recursive Member Query that references myRecursiveCTE
)
При написании пользовательской рекурсивной процедуры, не содержащей выражений CTE, необходимо включить явное завершающее предложение. Завершающее предложение отвечает за обеспечение завершения (в конце концов) рекурсивного алгоритма и возвращение наверх по стеку рекурсивных вызовов. Без этого предложения ваш код может уйти в бесконечный цикл.
Выражения CTE обладают двумя свойствами, которые облегчают работу с завершающими предложениями. Первое состоит в том, что если рекурсивный член возвращает пустые записи, возникает неявное завершающее предложение. В таком случае запрос рекурсивного члена не обращается рекурсивно к выражению CTE, а вместо этого возвращает наверх стек вызовов. Другая особенность состоит в том, что имеется возможность явно установить уровень MAXRECURSION.
Уровень MAXRECURSION можно установить явно в пакете, содержащем CTE, или посредством параметра на серверной стороне (по умолчанию в рамках сервера действует значение 100, если только оно не было изменено). Этот параметр ограничивает число вызовов выражения CTE, обращенных к нему самому. При достижении предельного значения создается исключение. В синтаксисе для установки уровня MAXRECURSION необходимо использовать предложение OPTION в операторе SELECT, следующим за выражением CTE, как показано далее
SELECT * FROM CTE
OPTION (MAXRECURSION 7);
Существуют некоторые другие правила, о которых следует помнить при построении рекурсивных выражений CTE. В рекурсивное выражение CTE должен входить как закрепленный, так и рекурсивный элемент. Оба элемента должны иметь одинаковое число столбцов, и столбцы, принадлежащие обоим элементам, должны иметь одинаковые типы данных. Рекурсивный элемент может ссылаться на выражение CTE только один раз, и в элементах не разрешается использовать следующие предложения или ключевые слова.

  • SELECT DISTINCT

  • GROUP BY

  • HAVING

  • TOP

  • LEFT/RIGHT OUTER JOIN

Пример простой иерархии [Frederic BROUARD (оригинал: Recursive Queries in SQL:1999 and SQL Server 2005) Перевод Моисеенко С.И. ]
Создадим таблицу, которая содержит типологию транспортных средств:

Download 441,57 Kb.

Do'stlaringiz bilan baham:
1   ...   54   55   56   57   58   59   60   61   ...   71




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish