summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/suite/compat/oracle/r/sp.result15
-rw-r--r--mysql-test/suite/compat/oracle/t/sp.test16
-rw-r--r--sql/sql_yacc_ora.yy1
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; }
;
/*