diff options
-rw-r--r-- | mysql-test/suite/compat/oracle/r/sp.result | 15 | ||||
-rw-r--r-- | mysql-test/suite/compat/oracle/t/sp.test | 16 | ||||
-rw-r--r-- | sql/sql_yacc_ora.yy | 1 |
3 files changed, 32 insertions, 0 deletions
diff --git a/mysql-test/suite/compat/oracle/r/sp.result b/mysql-test/suite/compat/oracle/r/sp.result index f2e9eb6f226..1716fd41edc 100644 --- a/mysql-test/suite/compat/oracle/r/sp.result +++ b/mysql-test/suite/compat/oracle/r/sp.result @@ -1,4 +1,19 @@ SET sql_mode=ORACLE; +# Testing ":=" to set the default value of a variable +CREATE FUNCTION f1 () RETURNS NUMBER(10) AS +a NUMBER(10) := 10; +BEGIN +DECLARE +b NUMBER(10) DEFAULT 3; +BEGIN +RETURN a+b; +END; +END; +/ +SELECT f1(); +f1() +13 +DROP FUNCTION f1; # Testing labels CREATE FUNCTION f1 (a INT) RETURNS CLOB AS BEGIN diff --git a/mysql-test/suite/compat/oracle/t/sp.test b/mysql-test/suite/compat/oracle/t/sp.test index 1880f153f2a..9ac4dbc7aed 100644 --- a/mysql-test/suite/compat/oracle/t/sp.test +++ b/mysql-test/suite/compat/oracle/t/sp.test @@ -1,5 +1,21 @@ SET sql_mode=ORACLE; +--echo # Testing ":=" to set the default value of a variable +DELIMITER /; +CREATE FUNCTION f1 () RETURNS NUMBER(10) AS + a NUMBER(10) := 10; +BEGIN + DECLARE + b NUMBER(10) DEFAULT 3; + BEGIN + RETURN a+b; + END; +END; +/ +DELIMITER ;/ +SELECT f1(); +DROP FUNCTION f1; + --echo # Testing labels DELIMITER /; diff --git a/sql/sql_yacc_ora.yy b/sql/sql_yacc_ora.yy index 0eec0946a30..dbcccd3bced 100644 --- a/sql/sql_yacc_ora.yy +++ b/sql/sql_yacc_ora.yy @@ -2851,6 +2851,7 @@ sp_decl_idents: sp_opt_default: /* Empty */ { $$ = NULL; } | DEFAULT expr { $$ = $2; } + | SET_VAR expr { $$ = $2; } ; /* |