mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-10411 Providing compatibility for basic PL/SQL constructs
- Part 9: EXCEPTION handlers The top-most stored routine blocks now support EXCEPTION clause in its correct place: AS [ declarations ] BEGIN statements [ EXCEPTION exceptions ] END Inner block will be done in a separate commit. - Part 14: IN OUT instead of INOUT (in SP parameter declarations)
This commit is contained in:
@ -430,12 +430,13 @@ CREATE PROCEDURE sp1 (p1 IN VARCHAR2(20), p2 OUT VARCHAR2(30))
|
||||
IS
|
||||
v1 INT;
|
||||
BEGIN
|
||||
EXCEPTION WHEN NOT FOUND THEN
|
||||
SELECT c1 INTO v1 FROM t1;
|
||||
p2 := p1;
|
||||
EXCEPTION
|
||||
WHEN NOT FOUND THEN
|
||||
BEGIN
|
||||
p2 := 'def';
|
||||
END;
|
||||
SELECT c1 INTO v1 FROM t1;
|
||||
p2 := p1;
|
||||
END;
|
||||
/
|
||||
CALL sp1('abc', @a);
|
||||
@ -444,3 +445,23 @@ SELECT @a;
|
||||
def
|
||||
DROP PROCEDURE sp1;
|
||||
DROP TABLE t1;
|
||||
CREATE PROCEDURE sp1 (v IN OUT INT, error IN INT)
|
||||
IS
|
||||
BEGIN
|
||||
SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO=error, MESSAGE_TEXT='User defined error!';
|
||||
v:= 223;
|
||||
EXCEPTION
|
||||
WHEN 30001 THEN
|
||||
BEGIN
|
||||
v:= 113;
|
||||
END;
|
||||
END;
|
||||
/
|
||||
SET @v=10;
|
||||
CALL sp1(@v, 30001);
|
||||
CALL sp1(@v, 30002);
|
||||
ERROR 45000: User defined error!
|
||||
SELECT @v;
|
||||
@v
|
||||
113
|
||||
DROP PROCEDURE sp1;
|
||||
|
Reference in New Issue
Block a user