Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Используйте структуру IF...ELSE для управления выполнениемСтр 1 из 3Следующая ⇒
Урок: Управление ходом выполнения Часто бывает необходимо, чтобы некоторые операторы T-SQL выполнялись только в случае выполнения какого-либо условия. Команда IF…ELSE помогает решить эту задачу. На уроке рассматривается действие условного оператора, оператора выбора CASE. Подобное внимание уделено именно использованию T-SQL. Вводится большое количество новых методов управления программным кодом T-SQL, таких как циклы, переходы, условия. Рекомендуется прочесть систему Books Online по приведенным на уроке примерам. Большое количество примеров сопровождается комментариями специалистов, чтобы оградить вас от возможных ошибок. Вы научитесь:
Transact-SQL обрабатывает операторы сценария от начала до конца, не пропуская ни один оператор, если не задано иное. Это не всегда то, что вам нужно. Иногда вам необходимо, чтобы оператор выполнялся, только если некоторое условие истинно, или повторялся, до тех пор, пока некоторое условие является истинным, или выполнялся указанное количество раз. Команды управления ходом выполнения Transact-SQL предоставляют вам возможность реализации подобных требований; и команды управления ходом выполнения являются темой рассмотрения в этом уроке. Блоки операторов Когда вы приступаете к использованию операторов управления ходом выполнения Transact-SQL, удобно интерпретировать определенную группу команд как блок. Transact-SQL позволяет вам сделать это с помощью пары команд BEGIN...END. Если за какой-либо командой управления ходом выполнения следует с ключевое слово BEGIN, Transact-SQL будет применять эту команду для всех операторов, расположенных между BEGIN и END. В блок вы можете включить любой оператор Transact-SQL, в том числе другие блоки BEGIN...END, но здесь есть несколько ограничений. Вы не можете сочетать операторы CREATE DEFAULT, CREATE PROCEDURE, CREATE RULE, CREATE TRIGGER и CREATE VIEW с какими-либо другими операторами. Также вы не можете изменять структуру таблицы и затем ссылаться на новый столбец в этом же блоке. Условное выполнение Первая группа операторов управления ходом выполнения, которую мы рассмотрим, определяет порядок выполнения операторов на основе значения булева выражения. (Напомним, что булевы выражения работают с логическими значениями типа "истина" (TRUE) или "ложь" (FALSE)). IF...ELSE Оператор IF, является простейшим из набора команд управления ходом выполнения. Если булево выражение, следующее за командой IF, имеет значение TRUE, то будет выполнен оператор или блок операторов, следующий за этим. Если булево выражение имеет значение FALSE, то оператор или блок операторов, следующий за этим, будет пропущен. Необязательная команда ELSE позволяет вам задавать оператор или блок операторов, который будет выполняться, только если булево выражение имеет значение FALSE. Например, команды Transact-SQL, представляемые ниже, возвращают 'Истина', если @test имеет значение "истина", и 'Ложь', если нет. IF @test SELECT 'Истина'ELSE SELECT 'Ложь'Совет. Операторы IF...ELSE могут быть вложены один в другой, образуя логическую структуру, схожую с конструкцией IF...ELSEIF...ELSE, принятой в других языках программирования. Однако следует остерегаться использовать этот прием в простых случаях. Тот же эффект можно достичь путем использования оператора CASE, который мы рассмотрим далее. При этом оценить ход выполнения будет легче. Используйте структуру IF...ELSE для управления выполнением
Совет. Этот сценарий использует команду PRINT для отображения сообщений на вкладке Messages (Сообщения) окна запроса Query. Команда PRINT полезна, когда вы впервые разрабатываете сценарий, в реальных же приложениях вы редко будете ее использовать.
CASE В большинстве языков программирования оператор CASE является расширенной формой оператора IF, которая позволяет вам определять множество булевых выражений в одном операторе. В SQL Server CASE является функцией, а не командой. Она используется не сама по себе, как IF. а как часть оператора SELECT или UPDATE. Операторы, включающие в себя структуру CASE, могут использовать одну из двух синтаксических форм, в зависимости от того, будет ли изменяться оцениваемое выражение. Простейшая форма в предположении, что всегда будет оцениваться булево выражение, имеет следующий вид: значение = выражениеЗначение может быть сколь угодно сложным. Вы можете использовать константу, имя столбца, или составное выражение, если необходимо. В качестве оператора сравнения всегда используется равенство. Синтаксис простой структуры CASE представлен ниже: CASE значение WHEN выражение_один THEN результирующее_выражение_один WHEN выражение_два THEN результирующее_выражение_два ... WHEN выражение_n THEN результирующее_выражение_n [ELSE альтернативное_результирующее_выражение]ENDВ этой форме функции CASE, выражение результирующее_выражение возвращается, только в том случае, если выражение, следующее за ключевым словом WHEN, логически равно указанному значению. Вы можете использовать в выражение любое количество фраз WHEN. Фраза ELSE необязательна – она выполняется, только если все фразы WHEN оцениваются как FALSE. Сравнение одного значения с некоторым количеством других значений является типичной задачей, но иногда вам требуется большая степень гибкости. В это случае вы можете воспользоваться так называемым поисковым синтаксисом функции CASE Transact-SQL, который имеет следующий вид: CASE WHEN булево_выражение_один THEN результирующее_выражение_одинWHEN булево_выражение_два THEN результирующее_выражение_два...WHEN булево_выражение_n THEN результирующее_выражение_n[ELSE альтернативное_результирующее_выражение]ENDВ этой форме CASE вы можете указать целое булево выражение в каждой фразе WHEN вместо неявного сравнения выражения в простой форме. Учтите, что при определении истинности можно оценивать несколько булевых_выражений. Transact-SQL возвратит только первое результирующее_выражение, а затем перейдет к оператору, следующему за END. |
||
Последнее изменение этой страницы: 2018-04-11; просмотров: 219. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |