Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

SSL ps_in_func-cursor.test  Sprache: unbekannt

 
Spracherkennung für: .test vermutete Sprache: SQL {SQL[78] Lisp[52] Masm[52]} [Methode: maximale Elemente, drei Dimensionen]

--echo #
--echo # MDEV-39518 Allow prepared statements in stored functions in assignment right hand
--echo #

--echo #
--echo # Prepare a statement outside of the function, open a cursor inside
--echo #

CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (10);
PREPARE stmt FROM 'SELECT MAX(a) FROM t1';

DELIMITER $$;
CREATE FUNCTION f1() RETURNS INT
BEGIN
  DECLARE c0 SYS_REFCURSOR;
  DECLARE v0 INT;
  OPEN c0 FOR PREPARE stmt;
  FETCH c0 INTO v0;
  CLOSE c0;
  RETURN v0;
END;
$$
DELIMITER ;$$

--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
SELECT f1();

# Assignment works
DELIMITER $$;
CREATE PROCEDURE p1()
BEGIN
  DECLARE n INT;
  SET n= f1();
  SELECT n;
END;
$$
DELIMITER ;$$
CALL p1;
CALL p1;
DROP PROCEDURE p1;

# DEFAULT also works
DELIMITER $$;
CREATE PROCEDURE p1()
BEGIN
  DECLARE n INT DEFAULT f1();
  SELECT n;
END;
$$
DELIMITER ;$$
CALL p1;
CALL p1;
DROP PROCEDURE p1;

DROP FUNCTION f1;
DEALLOCATE PREPARE stmt;
DROP TABLE t1;


--echo #
--echo # Prepare a statement inside the function, open a cursor
--echo #

CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (10);

DELIMITER $$;
CREATE FUNCTION f1() RETURNS INT
BEGIN
  DECLARE c0 SYS_REFCURSOR;
  DECLARE v0 INT;
  PREPARE stmt FROM 'SELECT MAX(a) FROM t1';
  OPEN c0 FOR PREPARE stmt;
  FETCH c0 INTO v0;
  CLOSE c0;
  DEALLOCATE PREPARE stmt;
  RETURN v0;
END;
$$
DELIMITER ;$$

--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
SELECT f1();

# Assignment works
DELIMITER $$;
CREATE PROCEDURE p1()
BEGIN
  DECLARE n INT;
  SET n= f1();
  SELECT n;
END;
$$
DELIMITER ;$$
CALL p1;
CALL p1;
DROP PROCEDURE p1;

# DEFAULT also works
DELIMITER $$;
CREATE PROCEDURE p1()
BEGIN
  DECLARE n INT DEFAULT f1();
  SELECT n;
END;
$$
DELIMITER ;$$
CALL p1;
CALL p1;
DROP PROCEDURE p1;

DROP FUNCTION f1;
DROP TABLE t1;

--echo # End of 13.1 tests

[Verzeichnis aufwärts0.15unsichere VerbindungÜbersetzung europäischer Sprachen durch Browser2026-10-08]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

letze Version des Elbe Quellennavigators


Jenseits des Üblichen ....
    

Besucher

Besucher

Statistik
#Sources=1126438
#Domains=1867298