Оператор SET - SQL програмиране
Съдържание
Операторът SET присвоява стойност на променлива по време на изпълнение. Тези променливи могат да бъдат специфични за платформата системни променливи или дефинирани от потребителя променливи.
Ключови думи
променлива
Показва системна или потребителска променлива.
стойност
Показва низ или числова стойност, съответстваща на системна или потребителска променлива.
Общи правила
За времето на сесията се задават променливи стойности. Стойностите, присвоени на променлива, трябва да съвпадат с типа данни на тази променлива. Например не можете да присвоите низова стойност на променлива, която е декларирана с числов тип данни. Командата, използвана за създаване на променлива, се различава от платформата до платформата. Например DB2, Oracle и SQL Server използват израз DECLARE, който декларира името и типа на променлива, но други платформи могат да използват различни начини за създаване на променливи.
Стойността, присвоена на променлива, не трябва да бъде константа. Това може да бъде динамично генерирана стойност, базирана на подзаявка. Например, можем да присвоим на променливата emp_id_var максималната стойност на идентификатора на служителя (emp_id) |.
ОБЯВЕТЕ emp_icLvar CHAR (5) ЗАДАВА празно var = (ИЗБЕРЕТЕ МАКС (emp_id) ОТ служителите КЪДЕ type = 'F')
В този пример тип F означава, че служителят работи на пълен работен ден и е платен.
Съвети и трикове за програмиране
Изявлението SET е много лесно преносимо от платформа на платформа. Само Oracle използва малко по-различна схема за присвояване на стойност на променлива. В следващия пример ще декларираме в SQL Server променлива с име emp_id_var и ще й присвоим стойност.
Сега ще извършим същата операция за сървъра Oracle.
DB2 платформата поддържа основна форма на оператор SET за присвояване на стойности на локални променливи, изходни параметри или специални регистри. В един оператор SET могат да се зададат множество стойности. Този оператор също ви позволява да присвоявате стойности на колоните на основната таблица в задействането. Не можете да присвоявате стойности в един израз на два типа променливи.
Синтаксисните елементи в DB2 са както следва.
променлива
Посочена е целевата променлива. SQL променливите трябва да бъдат декларирани преди употреба. Променливата може също да обозначава колона от основната таблица на задействането.
стойност
Стойността на променливата се посочва в съответствие с нейния тип данни. Когато присвоявате стойности на колони в тригер, можете също да се позовавате на имената на корелация OLD и NEW. За повече информация относно това, вижте подраздела DB2 на изявлението СЪЗДАВАНЕ/ИЗМЕНЕНИЕ НА ТРИГГЕРА)).
НУЛА
На нулируема колона и променлива се присвоява нулева стойност.
ПО ПОДРАЗБИРАНЕ
Колоните, създадени с помощта на клаузата WITH DEFAULT или IDENTITY, получават стойност по подразбиране. Тази клауза също присвоява NULL на онези колони, които приемат нулеви стойности и не са дефинирани с клаузите IDENTITY DEFAULT. Присвояване на стойност на една променлива.
ЗАДАВАНЕ нов var.order_qty = 125;
Ако присвоите стойности в един израз на няколко променливи наведнъж, тогава броят на променливите вляво от знака за равенство трябва точно да съвпада с броя на стойностите вдясно. Присвояване на стойности на няколко променливи.
Задайте new_var. order_qty = 125, new_.va y. отстъпка =
Когато използвате опция като SET променлива = SELECT, стойностите на резултата от оператора SELECT трябва да съвпадат точно с променливите по отношение на количество, позиция и тип данни. Ако операторът SELECT не връща никакви стойности, тогава на променливите се присвояват NULL стойности. Също така, за да присвоите стойности на множество променливи в един оператор, можете да използвате оператора SELECT ... INTO.
Ключовата дума SET има няколко приложения в MySQL. Първо, SET е тип данни на MySQL, който може да има множество стойности, разделени със запетаи. (За информация за тази област на приложение вижте Глава 2, Типове данни на MySQL.) В допълнение, инструкцията SET може да присвоява стойности на дефинирана от потребителя променлива. Това конкретно приложение е описано тук. Синтаксисът е както следва:
SET променлива - стойност [...]
Когато присвоявате стойности на няколко променливи в една инструкция, тези стойности се отделят една от друга със запетаи.
SET new_var.order_.aty - 125. new_var. отстъпка - 4;
В допълнение, MySQL ви позволява да използвате оператора SELECT, за да присвоявате стойности на променливи по същия начин, както е описано в стандартния раздел ANSI. Методът SELECT обаче има няколко слабости. Основният проблем е, че не се присвояват стойности и операторите SELECT са незабавни. Така че в следния пример:
променливата @new_var няма да получи новия идентификатор на реда на стойността + 3. Тя ще запази стойността, която е имала в началото на израза. Следователно е добра практика да присвоявате променлива само по една стойност в даден момент.
Клаузата SET като метод за присвояване на стойности на променливи не се поддържа в Oracle. Вместо това на персонализираните променливи се присвояват стойности с помощта на оператора за присвояване: =. Основният синтаксис е както следва.
PostgreSQL
В PostgreSQL командата SET се използва за присвояване на стойност на променлива по време на изпълнение.
SET променлива
Можете да присвоите низова константна стойност на променлива по време на изпълнение. Когато използвате ключовата дума DEFAULT, на променливата за изпълнение се присвоява стойност по подразбиране. Платформата PostgreSQL 7.2 поддържа следните променливи.
ИМЕНА ЗА КОДИРАНЕ НА КЛИЕНТИ
Задава многобайтово кодиране за клиентски системи PostgreSQL, свързани с многобайтова поддръжка.
DATESTYLE
Задава стила, използван за показване на датата и часа. Поддържат се следните стилове.
ISO
Датата и часът се показват във формата GST-MM-DD HH: MM: SS (стил по подразбиране ISO 8601).
SQL
Датата и часът се показват в стил Oracle/Ingres, а не в ANSI SQL стандарт.
PostgreSQL
Датата и часът се показват в дълъг формат PostgreSQL, но не по-дълъг от стандартния.
Немски
Датата и часът се показват като DD.MM.YYYY. Можете да прецизирате стиловете SQL и Postgresql, като използвате европейските, щатските и неевропейските ключови думи, които дават съответно форматите dd/mm/yyyy, mm/dd/yyyy и mm/dd/yyyy. Например: SETDATESTYLE = SQL, европейски.
СЕМЕНА
Задава началната стойност за вътрешния генератор на случайни числа. Стойността може да бъде всяко число с плаваща запетая между 0 и 1, умножено по 231-1. Тази стойност може да бъде зададена и с помощта на функцията PostseSQL setseed. Например:
Задава многобайтово кодиране за сървъри, свързани с многобайтова поддръжка.
Следва пример за настройка на Oracle и европейски формат за дата и час.
SOL сървър
SQL Server поддържа присвояване на стойности на променливи с помощта на израза SET, ако променливите са създадени преди това с помощта на израза DECLARE, както и присвояване на стойности на променливите на курсора. (SQL Server също използва инструкцията SET за други цели, като например разрешаване и деактивиране на флагове на сесия с команди като SETNOCOUNT ON.) Синтаксисът, специфичен за платформата, е показан по-долу.
Това изявление не поддържа ключовата дума DEFAULT, но в противен случай поддържа синтаксиса ANSI. Стойността на името на сървъра трябва да се отнася до връзката, посочена в предишния оператор CONNECT, или в постоянна форма, или в променлива форма.
Допълнителна информация по темата
Правила и практики за използване на изявлението INSERT в бази данни на различни платформи
Правила и практики за използване на изявлението SELECT в бази данни на различни платформи
Начини и техники за използване на изявлението FETCH в бази данни на различни платформи
Някои правила и практики за използване на изявлението SET PATH в бази данни на различни платформи