mirror of
https://github.com/MariaDB/server.git
synced 2025-07-21 21:22:27 +03:00
246 lines
3.7 KiB
Plaintext
246 lines
3.7 KiB
Plaintext
SET sql_mode=ORACLE;
|
|
|
|
--echo #
|
|
--echo # sql_mode=ORACLE: Predefined exceptions: TOO_MANY_ROWS, NO_DATA_FOUND, DUP_VAL_ON_INDEX
|
|
--echo #
|
|
|
|
--echo #
|
|
--echo # Testing NO_DATA_FOUND and TOO_MANY_ROWS
|
|
--echo #
|
|
|
|
CREATE TABLE t1 (a INT);
|
|
INSERT INTO t1 VALUES (10),(20);
|
|
DELIMITER $$;
|
|
CREATE PROCEDURE p1(lim INT, res OUT VARCHAR)
|
|
AS
|
|
a INT;
|
|
BEGIN
|
|
SELECT a INTO a FROM t1 LIMIT lim;
|
|
EXCEPTION
|
|
WHEN TOO_MANY_ROWS THEN res:='--- too_many_rows cought ---';
|
|
WHEN NO_DATA_FOUND THEN res:='--- no_data_found cought ---';
|
|
END;
|
|
$$
|
|
DELIMITER ;$$
|
|
SET @res='';
|
|
CALL p1(0, @res);
|
|
SELECT @res;
|
|
CALL p1(2, @res);
|
|
SELECT @res;
|
|
DROP PROCEDURE p1;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Testing DUP_VAL_ON_INDEX
|
|
--echo #
|
|
|
|
CREATE TABLE t1 (a INT PRIMARY KEY);
|
|
DELIMITER $$;
|
|
CREATE PROCEDURE p1(res OUT VARCHAR)
|
|
AS
|
|
BEGIN
|
|
INSERT INTO t1 VALUES (10);
|
|
INSERT INTO t1 VALUES (10);
|
|
EXCEPTION
|
|
WHEN DUP_VAL_ON_INDEX THEN res:='--- dup_val_on_index cought ---';
|
|
END;
|
|
$$
|
|
DELIMITER ;$$
|
|
SET @res='';
|
|
CALL p1(@res);
|
|
SELECT @res;
|
|
SELECT * FROM t1;
|
|
DROP PROCEDURE p1;
|
|
DROP TABLE t1;
|
|
|
|
|
|
--echo #
|
|
--echo # MDEV-10840 sql_mode=ORACLE: RAISE statement for predefined exceptions
|
|
--echo #
|
|
|
|
--echo #
|
|
--echo # RAISE outside of an SP context
|
|
--echo #
|
|
|
|
--error ER_SP_COND_MISMATCH
|
|
RAISE NO_DATA_FOUND;
|
|
--error ER_SP_COND_MISMATCH
|
|
RAISE INVALID_CURSOR;
|
|
--error ER_SP_COND_MISMATCH
|
|
RAISE DUP_VAL_ON_INDEX;
|
|
--error ER_SP_COND_MISMATCH
|
|
RAISE TOO_MANY_ROWS;
|
|
|
|
--error ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER
|
|
RAISE;
|
|
|
|
|
|
--echo #
|
|
--echo # RAISE for an undefinite exception
|
|
--echo #
|
|
|
|
DELIMITER $$;
|
|
--error ER_SP_COND_MISMATCH
|
|
CREATE PROCEDURE p1
|
|
AS
|
|
BEGIN
|
|
RAISE xxx;
|
|
END;
|
|
$$
|
|
DELIMITER ;$$
|
|
|
|
|
|
--echo #
|
|
--echo # RAISE for predefined exceptions
|
|
--echo #
|
|
|
|
DELIMITER $$;
|
|
CREATE PROCEDURE p1
|
|
AS
|
|
BEGIN
|
|
RAISE no_data_found;
|
|
END;
|
|
$$
|
|
DELIMITER ;$$
|
|
CALL p1();
|
|
DROP PROCEDURE p1;
|
|
|
|
DELIMITER $$;
|
|
CREATE PROCEDURE p1
|
|
AS
|
|
BEGIN
|
|
RAISE invalid_cursor;
|
|
END;
|
|
$$
|
|
DELIMITER ;$$
|
|
--error ER_SP_CURSOR_NOT_OPEN
|
|
CALL p1();
|
|
DROP PROCEDURE p1;
|
|
|
|
DELIMITER $$;
|
|
CREATE PROCEDURE p1
|
|
AS
|
|
BEGIN
|
|
RAISE dup_val_on_index;
|
|
END;
|
|
$$
|
|
DELIMITER ;$$
|
|
--error ER_DUP_ENTRY
|
|
CALL p1();
|
|
DROP PROCEDURE p1;
|
|
|
|
DELIMITER $$;
|
|
CREATE PROCEDURE p1
|
|
AS
|
|
BEGIN
|
|
raise too_many_rows;
|
|
END;
|
|
$$
|
|
DELIMITER ;$$
|
|
--error ER_TOO_MANY_ROWS
|
|
CALL p1();
|
|
DROP PROCEDURE p1;
|
|
|
|
|
|
--echo #
|
|
--echo # RAISE with no exception name (resignal)
|
|
--echo #
|
|
|
|
DELIMITER $$;
|
|
CREATE PROCEDURE p1()
|
|
AS
|
|
BEGIN
|
|
RAISE;
|
|
END;
|
|
$$
|
|
DELIMITER ;$$
|
|
--error ER_RESIGNAL_WITHOUT_ACTIVE_HANDLER
|
|
CALL p1();
|
|
DROP PROCEDURE p1;
|
|
|
|
|
|
CREATE TABLE t1 (a INT);
|
|
INSERT INTO t1 VALUES (10),(20);
|
|
DELIMITER $$;
|
|
CREATE PROCEDURE p1(lim INT)
|
|
AS
|
|
a INT;
|
|
BEGIN
|
|
SELECT a INTO a FROM t1 LIMIT lim;
|
|
EXCEPTION
|
|
WHEN TOO_MANY_ROWS THEN RAISE;
|
|
WHEN NO_DATA_FOUND THEN RAISE;
|
|
END;
|
|
$$
|
|
DELIMITER ;$$
|
|
CALL p1(0);
|
|
--error ER_TOO_MANY_ROWS
|
|
CALL p1(2);
|
|
DROP PROCEDURE p1;
|
|
DROP TABLE t1;
|
|
|
|
|
|
CREATE TABLE t1 (a INT);
|
|
INSERT INTO t1 VALUES (10),(20);
|
|
DELIMITER $$;
|
|
CREATE PROCEDURE p1(lim INT)
|
|
AS
|
|
a INT;
|
|
BEGIN
|
|
SELECT a INTO a FROM t1 LIMIT lim;
|
|
EXCEPTION
|
|
WHEN OTHERS THEN RAISE;
|
|
END;
|
|
$$
|
|
DELIMITER ;$$
|
|
CALL p1(0);
|
|
--error ER_TOO_MANY_ROWS
|
|
CALL p1(2);
|
|
DROP PROCEDURE p1;
|
|
DROP TABLE t1;
|
|
|
|
|
|
CREATE TABLE t1 (a INT);
|
|
INSERT INTO t1 VALUES (10),(20);
|
|
DELIMITER $$;
|
|
CREATE PROCEDURE p1()
|
|
AS
|
|
a INT;
|
|
CURSOR c IS SELECT a FROM t1;
|
|
BEGIN
|
|
FETCH c INTO a;
|
|
EXCEPTION
|
|
WHEN INVALID_CURSOR THEN RAISE;
|
|
END;
|
|
$$
|
|
DELIMITER ;$$
|
|
--error ER_SP_CURSOR_NOT_OPEN
|
|
CALL p1();
|
|
DROP PROCEDURE p1;
|
|
DROP TABLE t1;
|
|
|
|
|
|
CREATE TABLE t1 (a INT);
|
|
INSERT INTO t1 VALUES (10),(20);
|
|
DELIMITER $$;
|
|
CREATE PROCEDURE p1()
|
|
AS
|
|
a INT;
|
|
CURSOR c IS SELECT a FROM t1;
|
|
BEGIN
|
|
FETCH c INTO a;
|
|
EXCEPTION
|
|
WHEN OTHERS THEN RAISE;
|
|
END;
|
|
$$
|
|
DELIMITER ;$$
|
|
--error ER_SP_CURSOR_NOT_OPEN
|
|
CALL p1();
|
|
DROP PROCEDURE p1;
|
|
DROP TABLE t1;
|
|
|
|
|
|
--echo #
|
|
--echo # End of MDEV-10840 sql_mode=ORACLE: RAISE statement for predefined exceptions
|
|
--echo #
|