Eine aufbereitete Darstellung der Quelle

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

einige Melodien

Quelle  ps_in_func-row.result   Sprache: Lisp

 

#
# MDEV-39518 Allow prepared statements in stored functions in assignment right hand
#
#
# ROW variables
#
CREATE TABLE t1 (a INT,b VARCHAR(10));
INSERT INTO t1 VALUES (10,'b10');
CREATE FUNCTION f1() RETURNS ROW(a INT, b VARCHAR(10))
BEGIN
EXECUTE IMMEDIATE 'UPDATE t1 SET a=a+11';
RETURN ROW(100,'b100');
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE r ROW(a INT,b VARCHAR(10)) DEFAULT f1();
SELECT r.a, r.b;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE r ROW(a INT,b VARCHAR(10));
SET r= f1();
SELECT r.a, r.b;
END;
$$
SELECT f1();
ERROR 21000: Operand should contain 1 column(s)
CALL p1;
r.a r.b
100 b100
CALL p2;
r.a r.b
100 b100
DROP PROCEDURE p1;
DROP PROCEDURE p2;
DROP FUNCTION f1;
DROP TABLE t1;
#
# ROW variables initialized from a nested ROW value
# This produces ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
# The test just makes sure Item_row::set_in_ps_safe_context() works fine
#
CREATE TABLE t1 (a INT,b VARCHAR(10));
INSERT INTO t1 VALUES (10,'b10');
CREATE FUNCTION f1() RETURNS ROW(a INT, b VARCHAR(10))
BEGIN
EXECUTE IMMEDIATE 'UPDATE t1 SET a=a+11';
RETURN ROW(100,'b100');
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE r ROW(a INT,b VARCHAR(10)) DEFAULT ROW(f1(),100);
SELECT r.a, r.b;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE r ROW(a INT,b VARCHAR(10));
SET r= ROW(f1(),100);
SELECT r.a, r.b;
END;
$$
SELECT f1();
ERROR 21000: Operand should contain 1 column(s)
CALL p1;
ERROR HY000: Cannot cast 'row' as 'int' in assignment of `a`
CALL p2;
ERROR HY000: Cannot cast 'row' as 'int' in assignment of `a`
DROP PROCEDURE p1;
DROP PROCEDURE p2;
DROP FUNCTION f1;
DROP TABLE t1;
#
# ROW fields
#
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (10);
CREATE FUNCTION f1() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'UPDATE t1 SET a=a+1';
RETURN 100;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE r ROW (a INT, b VARCHAR(10)) DEFAULT ROW(f1(),'b100');
SELECT r.a, r.b;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE r ROW (a INT, b VARCHAR(10));
SET r.a= f1();
SET r.b= 'b100';
SELECT r.a, r.b;
END;
$$
SELECT f1();
ERROR 0A000: Dynamic SQL is not allowed in stored function or trigger
CALL p1;
r.a r.b
100 b100
CALL p2;
r.a r.b
100 b100
SELECT * FROM t1;
a
12
DROP PROCEDURE p1;
DROP PROCEDURE p2;
DROP FUNCTION f1;
DROP TABLE t1;
#
# A ROW value naming two functions, only the first one has PS.
#
# The statement is not pre-locked, so no MDL is taken on its routines
# and their tables are not collected. The routines still have to be
# put into the sp cache, all of them: Item_func_sp::fix_fields()
# resolves them from the cache only, so a routine which is missing
# there is reported as non existing.
#
CREATE TABLE t1 (a INT);
CREATE FUNCTION f1() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (10)';
RETURN 10;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
RETURN 20;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE r ROW(a INT, b INT);
SET r= ROW(f1(), f2());
SELECT r.a, r.b;
END;
$$
CREATE PROCEDURE p2()
BEGIN
DECLARE r ROW(a INT, b INT) DEFAULT ROW(f1(), f2());
SELECT r.a, r.b;
END;
$$
CALL p1;
r.a r.b
10 20
CALL p2;
r.a r.b
10 20
SELECT * FROM t1;
a
10
10
DROP PROCEDURE p1;
DROP PROCEDURE p2;
DROP FUNCTION f1;
DROP FUNCTION f2;
DROP TABLE t1;
# End of 13.1 tests

Messung V0.5 in Prozent
C=52 H=100 G=79

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet am  2026-10-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1126864
#Domains=1897691