diff options
author | Alexander Barkov <bar@mariadb.org> | 2016-08-16 10:24:12 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2017-04-05 15:02:43 +0400 |
commit | 4b61495576bc240392d7aaaec38ecac8631e447c (patch) | |
tree | 709a45ba786bcc894ed9752ea7fb603f1b9da866 /mysql-test/suite/compat/oracle/t/sp-code.test | |
parent | d2b007d6bc8458d3451bb28cc7319e39dae00e7d (diff) | |
download | mariadb-git-4b61495576bc240392d7aaaec38ecac8631e447c.tar.gz |
MDEV-10411 Providing compatibility for basic PL/SQL constructs
Part 9: EXCEPTION handlers
EXCEPTION is now supported in inner blocks.
Diffstat (limited to 'mysql-test/suite/compat/oracle/t/sp-code.test')
-rw-r--r-- | mysql-test/suite/compat/oracle/t/sp-code.test | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/mysql-test/suite/compat/oracle/t/sp-code.test b/mysql-test/suite/compat/oracle/t/sp-code.test index ff78410540c..dffd1a19fd2 100644 --- a/mysql-test/suite/compat/oracle/t/sp-code.test +++ b/mysql-test/suite/compat/oracle/t/sp-code.test @@ -2,6 +2,10 @@ SET sql_mode=ORACLE; +--echo # +--echo # Testing exceptions in the top-level blocks +--echo # + --echo # No HANDLER declarations, no exceptions DELIMITER /; CREATE FUNCTION f1 RETURN INT @@ -143,3 +147,175 @@ END; DELIMITER ;/ SHOW PROCEDURE CODE p1; DROP PROCEDURE p1; + + +--echo # +--echo # Testing EXCEPTIONS in internal blocks +--echo # + +--echo # No HANDLER declarations, no code, no exceptions +DELIMITER /; +CREATE PROCEDURE p1 (v IN OUT INT) +IS +BEGIN + v:=123; + BEGIN + END; +END; +/ +DELIMITER ;/ +SHOW PROCEDURE CODE p1; +SET @v=10; +CALL p1(@v); +SELECT @v; +DROP PROCEDURE p1; + +--echo # No HANDLER declarations, no code, some exceptions +DELIMITER /; +CREATE PROCEDURE p1 (v IN OUT INT) +IS +BEGIN + v:=123; + BEGIN + EXCEPTION + WHEN 20002 THEN v:=335; + END; +END; +/ +DELIMITER ;/ +SHOW PROCEDURE CODE p1; +SET @v=10; +CALL p1(@v); +SELECT @v; +DROP PROCEDURE p1; + +--echo # No HANDLER declarations, some code, no exceptions +DELIMITER /; +CREATE PROCEDURE p1 (v IN OUT INT) +IS +BEGIN + v:=123; + BEGIN + v:=223; + END; +END; +/ +DELIMITER ;/ +SHOW PROCEDURE CODE p1; +SET @v=10; +CALL p1(@v); +SELECT @v; +DROP PROCEDURE p1; + +--echo # No HANDLER declarations, some code, some exceptions +DELIMITER /; +CREATE PROCEDURE p1 (v IN OUT INT) +IS +BEGIN + v:=123; + BEGIN + v:=223; + EXCEPTION + WHEN 20002 THEN v:=335; + END; +END; +/ +DELIMITER ;/ +SHOW PROCEDURE CODE p1; +SET @v=10; +CALL p1(@v); +SELECT @v; +DROP PROCEDURE p1; + +--echo # Some HANDLER declarations, no code, no exceptions +DELIMITER /; +CREATE PROCEDURE p1 (v IN OUT INT) +IS +BEGIN + v:=123; + DECLARE + EXIT HANDLER FOR 1000 + BEGIN + v:=323; + END; + BEGIN + END; +END; +/ +DELIMITER ;/ +SHOW PROCEDURE CODE p1; +SET @v=10; +CALL p1(@v); +SELECT @v; +DROP PROCEDURE p1; + +--echo # Some HANDLER declarations, no code, some exceptions +DELIMITER /; +CREATE PROCEDURE p1 (v IN OUT INT) +IS +BEGIN + v:=123; + DECLARE + EXIT HANDLER FOR 1000 + BEGIN + v:=323; + END; + BEGIN + EXCEPTION + WHEN 20002 THEN v:=335; + END; +END; +/ +DELIMITER ;/ +SHOW PROCEDURE CODE p1; +SET @v=10; +CALL p1(@v); +SELECT @v; +DROP PROCEDURE p1; + +--echo # Some HANDLER declarations, some code, no exceptions +DELIMITER /; +CREATE PROCEDURE p1 (v IN OUT INT) +IS +BEGIN + v:=123; + DECLARE + EXIT HANDLER FOR 1000 + BEGIN + v:=323; + END; + BEGIN + v:= 324; + END; +END; +/ +DELIMITER ;/ +SHOW PROCEDURE CODE p1; +SET @v=10; +CALL p1(@v); +SELECT @v; +DROP PROCEDURE p1; + +--echo # Some HANDLER declarations, some code, some exceptions +DELIMITER /; +CREATE PROCEDURE p1 (v IN OUT INT) +IS +BEGIN + v:=123; + DECLARE + EXIT HANDLER FOR 1000 + BEGIN + v:=323; + END; + BEGIN + v:= 324; + EXCEPTION WHEN 2002 THEN v:= 325; + END; +END; +/ +DELIMITER ;/ +SHOW PROCEDURE CODE p1; +SET @v=10; +CALL p1(@v); +SELECT @v; +DROP PROCEDURE p1; |