Конструкции, управляющие ходом выполнения команд
В хранимых процедурах, функциях и триггерах может применяться несколько конструкций, управляющих ходом выполнения коммад:
♦ 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)