Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Изменение порядка выполнения операторов в хранимой процедуре






В коде листинга 21.4 используются операторы< $I[] IF > IF и< $I[] WHILE > WHILE, которые, как и некоторые другие операторы языка T-SQL, используются для изменения порядка выполнения операторов (инструкций) в хранимых процедурах (в функциях и триггерах). В этих операторах, практически, нет ничего необычного, что бы отличало их от подобных операторов других языков программирования, за исключением того, что в качестве логических выражений этих операторов могут выступать значения, возвращаемые SELECT-инструкциями.

В этом же коде используются «скобки» < $I[] BEGIN … END > BEGIN … END, позволяющие определить < $I[]блок инструкций > блок инструкций, на которые распространяется действие операторов IF и WHILE.

Синтаксис оператора IF:

Синтаксис

IF Boolean_expression

{ sql_statement | statement_block }

[ ELSE

{ sql_statement | statement_block } ]

 

Здесь:

Boolean_expression — логическое выражение, возвращающее TRUE или FALSE. Если логическое выражение содержит инструкцию SELECT, то эта инструкция должна быть заключена в круглые скобки.

{ sql_statement | statement_block } — любая T-SQL-инструкция или группа инструкций, заключенная в блок.

Например, следующий код заменяет первый символ в строке @C_WHERE на 'N', если он равен значению '0'. Здесь функция возвращает подстроку, содержащую первый символ строки-аргумента.

IF SUBSTRING(@C_WHERE, 1, 1)='0'

SET @C_WHERE ='N' + SUBSTRING(@C_WHERE, 2, 3)

В логическом выражении оператора IF можно использовать инструкцию SELECT, например:

IF (SELECT SUM(Количество) FROM Запасы WHERE КодТовара=@CurrentCode) < 1000

SET @MEESAGE ='Пора пополнять запасы товара! '

ELSE

SET @MEESAGE ='Рано пополнять запасы товара! '

 

Определенную пользу в логическом выражении оператора IF может принести инструкция (оператор) < $I[] EXISTS > EXISTS, которая возвращает значение TRUE или FALSE в зависимости от того, возвращает ли помещенная за ней SELECT -инструкция какое-либо количество строк или — нет. Например:

IF EXISTS (SELECT * FROM Ремонты WHERE НомерИзделия = @НомерИзделия)

/* Обновить данные о ремонте изделия */

UPDATE Ремонты SET

ТипРемонта=@ТипРемонта,

ДатаВремонт = CONVERT(datetime, @ДатаВремонт, 4),

ДатаИзРемонта =CONVERT(datetime, @ДатаИзРемонта, 4),

КодЦентра = @КодЦентра,

Неисправность=@Неисправность,

СтоимРемонта=@СтоимРемонта

WHERE НомерИзделия = @НомерИзделия AND

ПорядНомРемонта=@ПорядНомРемонта

ELSE

/* Внести данные о ремонте изделия */

INSERT INTO Ремонты

(НомерИзделия, ПорядНомРемонта, ТипРемонта, ДатаВремонт,

ДатаИзРемонта, КодЦентра, Неисправность, СтоимРемонта)

VALUES

(@НомерИзделия, @ПорядНомРемонта, @ТипРемонта,

CONVERT(datetime, @ДатаВремонт, 4),

CONVERT(datetime, @ДатаИзРемонта, 4),

@КодЦентра, @Неисправность, @СтоимРемонта)

 

Оператор WHILE — «обычный» оператор организации циклических действий. Синтаксис этого оператораследующий:

Синтаксис

WHILE Boolean_expression
{ sql_statement | statement_block }
[ BREAK ]
{ sql_statement | statement_block }
[ CONTINUE ]

Здесь:

Boolean_expression — Логическое выражение, возвращающее TRUE или FALSE. Если логическое выражение содержит инструкцию SELECT, то эта инструкция должна быть заключена в круглые скобки. Например:

WHILE (SELECT SUM(Количество) FROM Запасы) < 10000

{ sql_statement | statement_block } — любой оператор языка T-SQL или блок операторов, определяемый при помощи ключевых слов BEGIN и END.

BREAK — ключевое слово, вызывающее прерывание WHILE -цикла и выполнение операторов (инструкций), находящихся за словом END выполняющегося блока.

CONTINUE — ключевое слово, вызывающее игнорирование всех операторов блока, находящихся за этим словом, и переход к началу блока цикла WHILE.

Конечно, кроме рассмотренных здесь операторов, в языке T-SQL имеются и другие полезные операторы, о которых можно узнать либо и справочной системы, либо из литературы, специально посвященной программированию для SQL Server 2000.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.