загрузка...

трусы женские
загрузка...

Деякі риси SQL / 92 і SQL-3

Деякі риси SQL / 92 і SQL-3

Оператор виділення пам'яті під дескриптор :: = ALLOCATE DESCRIPTOR [WITH MAX ] :: = :: = (] :: = GLOBAL | LOCAL :: = < parameter name> ( (

Коментар:

Дескриптор, це динамічно виділяється частина пам'яті прикладної програми, що служить для прийняття інформації про результат або параметрах динамічно підготовленого оператора SQL або завдання параметрів такого оператора. Сенс того, що для виділення пам'яті використовується оператор SQL, а не просто стандартна функція alloc чи якась інша функція динамічного запиту пам'яті, полягає в тому, що прикладна програма не знає структури дескриптора і навіть його адреси. Це дозволяє не прив'язувати SQL до особливостей будь-якої системи програмування або ОС. Всі обміни інформацією між власне прикладною програмою і дескрипторами виробляються також за допомогою спеціальних операторів SQL (GET і SET, див. Нижче).

Друге питання: навіщо взагалі виділяти пам'ять під дескриптори динамічно. Це потрібно тому, що в загальному випадку прикладна програма, що використовує динамічний SQL, не знає в статиці число одночасно діючих динамічних операторів SQL, опис яких може знадобитися. З цим же пов'язане те, що ім'я дескриптора може задаватися як літеральної рядком символів, так і через строкову змінну включає мови, тобто його можна генерувати під час виконання програми.

В операторі ALLOCATE DESCRIPTOR, крім іншого, може зазначатися число описових елементів, на яке він розрахований. Якщо, наприклад, при виділенні пам'яті під дескриптор в розділі WITH MAX вказано ціле позитивне число N, а потім дескриптор використовується для опису M (M> N) елементів (наприклад, M стовпців результату запиту), то це призводить до виникнення виняткової ситуації.

Оператор звільнення пам'яті з-під дескриптора :: = DEALLOCATE DESCRIPTOR

Коментар:

Виконання цього оператора призводить до звільнення пам'яті з-під раніше виділеного дескриптора. Після цього використання імені дескриптора незаконно в будь-якому операторі, крім ALLOCATE DESCRIPTOR.

Оператор отримання інформації з області дескриптора SQL :: = GET DESCRIPTOR :: = (VALUE < item number> ({ } ...] :: = COUNT :: = < simple target specification 2> :: = :: = :: = < simple target specification> :: = TYPE (LENGHT (OCTET_LENGHT (RETURNED_LENGHT (RETURNED_OCTET_LENGHT (PRECISION (SCALE (DATETIME_INTERVAL_CODE (DATATIME_INTERVAL_PRECISION (NULLABLE (INDICATOR (DATA (NAME (UNNAMED (COLLATION_CATALOG (COLLATION_SCHEMA (COLLATION_NAME (CHARACTER_SET_CATALOG (CHARACTER_SET_SCHEMA ( CHARACTER_SET_NAME :: = (

Коментар:

Оператор GET DESCRIPTOR служить для вибірки описової інформації, раніше розміщеної в дескрипторі за допомогою оператора DESCRIBE. За одне виконання оператора можна отримати або число заповнених елементів дескриптора (COUNT), або інформацію, що міститься в одному із заповнених елементів.

Оператор установки дескриптора :: = SET DESCRIPTOR :: = (VALUE < set item information> [{ } ...] :: = COUNT :: = :: = :: = :: =

Коментар:

Оператор SET DESCRIPTOR служить для заповнення елементів дескриптора з метою його використання у розділі USING. За одне виконання оператора можна помістити значення в поле COUNT (число заповнених елементів ), або частково або повністю сформувати один елемент дескриптора.

Оператор підготовки :: = PREPARE FROM :: = < simple target specification> :: = | | | | :: = | | | | | | :: = :: = :: = :: = :: = :: = | :: = [ scope option] :: = [] [] :: = FOR {READ ONLY | UPDATE [OF ]} :: = | :: = SELECT [] : : = DISTINCT | ALL

Коментар:

Оператор PREPARE викликає компіляцію і побудова плану виконання заданого в текстовій формі оператора SQL. Після успішного виконання оператора PREPARE з підготовленим оператором зв'язується вказане (літерально чи опосередковано) ім'я цього оператора, яке потім може бути використано в операторах DESCRIBE, EXECUTE, OPEN CURSOR, ALLOCATE CURSOR і DEALLOCATE PREPARE. Цей зв'язок зберігається до явного виконання оператора DEALLOCATE PREPARE.

Оператор відмови від підготовленого оператора :: = DEALLOCATE PREPARE

Коментар:

Виконання цього оператора призводить до того, що раніше підготовлений оператор SQL, пов'язаний з вказаним ім'ям оператора, ліквідується, і, відповідно, ім'я оператора стає невизначеним. Якщо підготовлений оператор був оператором вибірки, і до моменту виконання оператора DEALLOCATE існував відкритий курсор, пов'язаний з ім'ям підготовленого оператора, то оператор DEALLOCATE повертає код помилки. Якщо ж для підготовленого оператора вибірки існував Невідкритий курсор, утворений за допомогою оператора ALLOCATE CURSOR, то цей курсор ліквідується. Якщо курсор оголошувався оператором DECLARE CURSOR, то такий курсор переходить в стан, що існував до виконання оператора PREPARE. Якщо з курсором був пов'язаний підготовлений оператор (динамічний DELETE або UPDATE), то для цих операторів виконується неявний оператор DEALLOCATE.

Оператор запиту опису підготовленого оператора :: = | :: = DESCRIBE INPUT :: = DESCRIBE [OUTPUT] :: = | :: = {USING | INTO} [{ } ...] :: = :: = {USING | INTO} SQL DESCRIPTOR :: = | :: = [] :: = [INDICATOR] :: = [] :: = [INDICATOR]

Коментар:

При виконанні оператора DESCRIBE відбувається заповнення вказаного в операторі дескриптора інформацією, яка описує або результат раніше підготовленого оператора SQL (якщо це оператор вибірки), або кількість і типи параметрів підготовленого оператора. В тут покладається писати USING SQL DESCRIPTOR.

Оператор виконання підготовленого оператора :: = EXECUTE (] (] :: = :: =

Коментар:

Оператор EXECUTE може бути застосований до будь-якого раніше підготовленому оператору SQL, окрім . Якщо це оператор , то оператор EXECUTE повинен містити розділ з ключовим словом INTO. В будь-якому випадку число фактичних параметрів, що задаються через розділи using, повинна відповідати числу формальних параметрів, визначених у підготовленому операторі SQL.

Оператор підготовки з негайним виконанням :: = EXECUTE IMMEDIATE

Коментар:

При виконанні оператора EXECUTE IMMEDIATE проводиться підготовка та негайне виконання заданого в текстовій формі оператора SQL. При цьому підготовлюваний оператор не повинен бути оператором вибірки, не повинен містити формальних параметрів та коментарів.

Оператор оголошення курсору над динамічно підготовленим оператором вибірки :: = DECLARE [INSENSITIVE] [SCROLL] CURSOR FOR

Коментар:

Як визначається в новому стандарті, для всіх операторів DECLARE CURSOR, курсори фактично створюються при початку транзакції і знищуються при її завершенні. Зауважимо, що в цьому операторі і - прямо задані ідентифікатори.

Оператор визначення курсору над динамічно підготовленим оператором вибірки :: = ALLOCATE [INSENSITIVE] [SCROLL] CURSOR FOR : : = (]

Коментар:

Курсори, що визначаються за допомогою оператора ALLOCATE CURSOR, фактично створюються при виконанні такого оператора і

Сторінки: 1 2
загрузка...
ur.co.ua

енциклопедія  з сиру  аджапсандалі  ананаси  узвар