Конструкции, управляющие ходом выполнения команд

В хранимых процедурах, функциях и триггерах может применяться несколько конструкций, управляю­щих ходом выполнения коммад:

♦ return;

♦ if...else;

♦ begin... end;

♦ while;

♦ break/continue;

♦ waitfor;

♦ goto.

Также можно в клиентское приложение передать код возврата, указывающий на состояние выполнения процедуры. Коды возврата не предназначены для пересылки дан­ных, они применяются для сообщений о состоянии выполнения. Инструкция return завершает выполнение процедуры, функции, триггера и возвращает управление вызывающему приложению. После инструкции return никакие инструкции не выполняются, как показано далее.

 

CREATE PROCEDURE <procedure пате>

(

@parml INT

, @parm2 VARCHAR(20) = 'Default value'

)

AS

-- Эта инструкция вернет 1 назад приложению, вызвавшему хранимую --- процедуру

RETURN 1

-- Любой код, начиная с этого места, выполняться не будет

if...else позволяет выполнять программный код в соответствии с условием. Инструкция if проверяет заданное условие и выполняет следующую инструк­цию, если условие равно True. Необязательная инструкция else позволяет вы­полнить заданный программный код, если проверка условия вернула значение False. Далее приведен пример.

DECLARE @var INT

SET @var = 1

IF @var = 1

PRINT 'Правда'

ELSE

PRINT 'Ложь'

Независимо от ветви программного кода, выбранной конструкцией if...else в соответствии с условием, выполняется только одна инструкция, как показано в следующем примере.

 

DECLARE @var INT

SET @var = 1

IF @var = 2

PRINT 'Правда'

PRINT 'Всё равно выполнится'

 

Для того, чтобы ограничить инструкции if...else, если эти инструкции содержат более одного оператора, необходимы операторы begin... end, как показано в примере ниже:

Рис 1. Таблица dbo.DISEASE_IERARHI – иерархия заболеваний.

Таблица используется для примера, приведенного ниже.

if(@DiseaseID<>0)