[begin_label
:] BEGIN [statement_list
] END [end_label
]
BEGIN ... END
syntax is used for writing
compound statements, which can appear within stored programs. A
compound statement can contain multiple statements, enclosed by
the BEGIN
and END
keywords.
statement_list
represents a list of one
or more statements, each terminated by a semicolon
(;
) statement delimiter.
statement_list
is optional, which means
that the empty compound statement (BEGIN END
)
is legal.
Use of multiple statements requires that a client is able to send
statement strings containing the ;
statement
delimiter. This is handled in the mysql
command-line client with the delimiter
command.
Changing the ;
end-of-statement delimiter (for
example, to //
) allows ;
to
be used in a program body. For an example, see
Section 18.1, “Defining Stored Programs”.
A compound statement can be labeled.
end_label
cannot be given unless
begin_label
also is present. If both
are present, they must be the same.
The optional [NOT] ATOMIC
clause is not
supported. This means that no transactional savepoint is set at
the start of the instruction block and the
BEGIN
clause used in this context has no effect
on the current transaction.
User Comments
The variable1 is one, the condition "if variable1 = 0" isn't true. Therefore everything between the IF and the END IF gets skipped.
CREATE PROCEDURE p12 (IN parameter1 INT)
BEGIN DECLARE variable1 INT;
SET variable1 = parameter1 + 1;
IF variable1 = 0 THEN INSERT INTO t VALUES (17);
END IF;
IF parameter1 = 0 THEN UPDATE t SET s1 = s1 + 1;
ELSE UPDATE t SET s1 = s1 + 2;
END IF;
Add your own comment.