SET NAMES utf8mb3; SET sql_mode=ORACLE;
#
# MDEV-39022 Add `LOCAL spvar` syntax for prepared statements and SYS_REFCURSORs
#
CREATE PROCEDURE p1 AS
TYPE rec0_t IS RECORD (a INT, b INT);
TYPE cur0_t IS REF CURSOR RETURN rec0_t;
c0 cur0_t;
BEGIN
PREPARE stmt FROM 'SELECT 1,2';
OPEN c0 FOR PREPARE stmt;
END;
$$ ERROR HY000: Incorrect usage of c0 and OPEN..FOR PREPARE ps_name
CREATE PROCEDURE p1 AS
v0 TEXT;
c0 SYS_REFCURSOR;
BEGIN
PREPARE stmt FROM 'SELECT 123';
OPEN c0 FOR PREPARE stmt;
FETCH c0 INTO v0;
CLOSE c0;
SELECT v0;
END;
$$
CALL p1;
v0 123
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURN INT AS
c0 SYS_REFCURSOR;
BEGIN
OPEN c0 FOR PREPARE stmt;
CLOSE c0; RETURN0;
END;
$$
SELECT f1(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
CREATE PROCEDURE p1 AS
a INT;
BEGIN
a:= f1();
END;
$$
PREPARE stmt FROM 'SELECT 1,2';
CALL p1;
DEALLOCATE PREPARE stmt;
DROP PROCEDURE p1;
DROP FUNCTION f1;
CREATE PROCEDURE p1 AS
c0 SYS_REFCURSOR;
v0 TEXT;
ps_name VARCHAR(30) := 'stmt';
BEGIN
PREPARE stmt FROM 'SELECT 10';
OPEN c0 FOR LOCAL ps_name;
FETCH c0 INTO v0;
CLOSE c0;
SELECT v0;
END;
$$
CALL p1;
v0 10
DROP PROCEDURE p1;
CREATE FUNCTION f1() RETURN INT AS
c0 SYS_REFCURSOR;
spvar VARCHAR(10) DEFAULT 'stmt0';
BEGIN
OPEN c0 FOR LOCAL spvar; RETURN0;
END;
$$
SELECT f1(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
CREATE PROCEDURE p1 AS
a INT;
BEGIN
a:= f1();
END;
$$
CALL p1; ERROR HY000: Unknown prepared statement handler (stmt0) given to OPEN
PREPARE stmt0 FROM 'SELECT 1,2';
CALL p1;
DEALLOCATE PREPARE stmt0;
DROP PROCEDURE p1;
DROP FUNCTION f1;
CREATE PROCEDURE p1 AS
c0 SYS_REFCURSOR;
ps_name VARCHAR(10) := 'stmt';
BEGIN
PREPARE stmt FROM 'SELECT :a';
OPEN c0 FOR LOCAL ps_name;
END;
$$
CALL p1; ERROR HY000: Incorrect arguments to OPEN
DROP PROCEDURE p1;
CREATE PROCEDURE p1 AS
c0 SYS_REFCURSOR;
v0 TEXT;
ps_name VARCHAR(30) := 'àçé';
BEGIN
PREPARE àçé FROM 'SELECT 10';
OPEN c0 FOR LOCAL ps_name;
FETCH c0 INTO v0;
CLOSE c0;
SELECT v0;
DEALLOCATE PREPARE àçé;
END;
$$
CALL p1;
v0 10
DROP PROCEDURE p1;
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.