Інструкція SET - SQL програмування

Зміст

Інструкція SET надає значення змінної часу виконання. Ці змінні можуть бути системними змінними, специфічними для платформи, або змінними користувачами.

Ключові слова

змінна

Позначає системну або змінну користувача.

значення

Позначає рядкове або числове значення, що відповідає системній або змінній користувача.

Загальні правила

Значення змінних встановлюються під час сеансу. Значення, надані змінній, повинні відповідати типу даних цієї змінної. Наприклад, ви не можете присвоїти рядкове значення змінної, яка оголошена з числовим типом даних. Команда, з допомогою якої змінна створюється, різних платформах різна. Наприклад, у DB2, Oracle та SQL Server використовується інструкція DECLARE, в якій оголошується ім'я та тип змінної, однак інші платформи можуть використовувати інші способи створення змінних.

Значення, яке надається змінною, не обов'язково має бути константою. Це може бути значення, що динамічно генерується, створюване на основі підзапиту. Наприклад, ми можемо надати змінній emp_id_var максимальне значення ідентифікатора співробітника (emp_id).

DECLARE emp_icLvar CHAR(5) SET empty var=(SELECT MAX(emp_id) FROM employees WHERE type='F')

У цьому прикладі type F означає, що співробітник працює повний день (full-time) і перебуває на окладі.

Поради та хитрощі програмування

Інструкція SET легко переноситься з платформи на платформу. Тільки Oracle використовується дещо інша схема присвоєння значення змінної. У цьому прикладі ми оголосимо в SQL Server змінну з ім'ям emp_id_var інадамо їй значення.

А тепер ми виконаємо ту саму операцію для сервера Oracle.

Платформа DB2 підтримує базову форму інструкції SET для присвоєння значень локальним змінним, вихідним параметрам або спеціальним регістрам. В одній інструкції SET можна надавати відразу кілька значень. Також ця інструкція дозволяє надавати значення стовпцям базової таблиці у тригері. Не можна присвоїти значення в одній інструкції двом типам змінних.

Синтаксичні елементи у DB2 такі.

змінна

Вказується цільова змінна. Змінні SQL повинні бути оголошені перед використанням. Змінна може позначати стовпець базової таблиці тригера.

значення

Вказується значення змінної відповідно до її типу даних. Ви також можете використовувати посилання на кореляційні імена OLD і NEW. За додатковою інформацією про це звертайтеся до підрозділу, присвяченого DB2, розділу «Інструкція CREATE/ALTER TRIGGER)).

NULL

Стовпцю та змінній, які можуть набувати значення NULL, присвоюється значення NULL.

DEFAULT

Стовпцям, які створювалися із зазначенням пропозиції WITH DEFAULT або IDENTITY, надається значення за замовчуванням. Ця пропозиція також надає порожнє значення (NULL) тим стовпцям, які приймають порожні значення і при цьому не визначені з пропозиціями DEFAULT IDENTITY. Надамо значення однієї змінної.

SET new var.order_qty=125;

Якщо ви надаєте значення в одній інструкції відразу декільком змінним, то кількість змінних ліворуч від знака рівності повинна точно відповідати кількості значень праворуч. Надамо значення декільком змінним.

SET new_var. order_qty=125, new_.va р discount =

При використанні такого варіанту, як SET змінна = SELECT значення результуючого набору інструкції SELECT повинні точно відповідати змінним за кількістю, положенням і типом даних. Якщо інструкція SELECT не повертає жодних значень, змінним присвоюються значення NULL. Також для визначення значень декільком змінним в одній інструкції ви можете використовувати інструкцію SELECT…INTO.

Ключове слово SET має у MySQL кілька способів використання. По-перше, SET - це тип даних MySQL, в якому може бути кілька значень, розділених комами. (За інформацією про цю сферу застосування звертайтеся до розділу 2, розділ «Типи даних MySQL».) Крім того, інструкція SET може надавати значення змінної користувача. Тут описується саме цей спосіб застосування. Синтаксис наступний:

SET змінна - значення […]

При присвоєнні в одній інструкції значень декільком змінним ці значення відокремлюються один від одного комами.

SET new_var.order_.aty - 125. new_var. discount - 4;

Крім того, MySQL дозволяє використовувати інструкцію SELECT для присвоєння значень змінним точно так, як це описується в розділі, присвяченому стандарту ANSI. Однак метод з використанням інструкції SELECT має кілька слабких місць. Головна проблема полягає в тому, що значення не надаються та інструкції SELECT негайно. Таким чином, у наступному прикладі:

змінна @new_var не набуде нового значення row id + 3. Збережеться те значення, яке вона мала на початку інструкції. Тому гарною практикою є присвоєння змінної лише значення за раз.

Пропозиція SET як метод надання значеннязмінним у Oracle не підтримується. Натомість змінним користувачам значення присвоюються за допомогою оператора присвоювання :=. Базовий синтаксис є наступним.

PostgreSQL

У PostgreSQL команда SET використовується для надання значення змінної під час виконання.

SET змінна

Змінною під час виконання можна присвоїти рядкове постійне значення. При використанні ключового слова DEFAULT змінної часу виконання надається значення за промовчанням. Платформа PostgreSQL 7.2 підтримує такі змінні.

CLIENT ENCODING NAMES

Встановлюється мультибайтове кодування для клієнтських систем PostgreSQL, скомпонованих із мультибайтовою підтримкою.

DATESTYLE

Встановлюється стиль, який використовується для відображення дати та часу. Підтримуються такі стилі.

ISO

Дата та час відображаються у форматі ГПТ-ММ-ДД ЧЧ:ММ:СС (за замовчуванням стиль ISO 8601).

SQL

Дата і час відображаються в стилі Oracle/Ingres, а не в стилі, який надається стандартом ANSI SQL.

PostgreSQL

Дата та час відображаються у довгому форматі PostgreSQL, але не довше, ніж задано за замовчуванням.

German

Дата та час відображаються у вигляді ДД.ММ.РРРР. Ви можете уточнювати стилі SQL та Postgresql, використовуючи ключові слова European, US та NonEuropean, які надають дат формати дд/мм/гггг, мм/дд/гггг та мм/дд/гггг відповідно. Наприклад: SETDATESTYLE = SQL, European.

SEED

Встановлюється початкове значення внутрішнього генератора випадкових чисел. Значення може бути будь-яке число з плаваючою точкою в діапазоні від 0 до 1, помножене на 231-1. Це значення також можна встановитиза допомогою функції PostgreSQL setseed. Наприклад:

Встановлюється мультибайтове кодування для серверів, скомпонованих із мультибайтовою підтримкою.

Нижче наведено приклад встановлення формату дати та часу стилю Oracle та European.

SOL Server

Платформа SQL Server підтримує надання значень змінним за допомогою інструкції SET, якщо ці змінні були раніше створені за допомогою інструкції DECLARE, а також надання значень змінним курсорів. (Також SQL Server використовує інструкцію SET для інших цілей, наприклад для увімкнення та вимкнення прапорів сеансу командами типу SETNOCOUNT ON.) Синтаксис, специфічний для даної платформи, наводиться нижче.

Ця інструкція не підтримує ключове слово DEFAULT, але в будь-якому випадку підтримує синтаксис ANSI. Значення ім'я_сервера має посилатися на з'єднання, зазначене в попередній інструкції CONNECT, або у формі константи, або у формі змінної.

Додаткова інформація на тему

Правила та методи використання інструкції INSERT у базах даних на різних платформах

Правила та методи використання інструкції SELECT у базах даних на різних платформах

Способи та методи використання інструкції FETCH у базах даних на різних платформах

Деякі правила та методи використання інструкції SET PATH у базах даних на різних платформах