Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Duplicate
-
10.5, 11.8
-
None
Description
This script works in Oracle and returns 1 as exprected.
DROP PACKAGE pkg; |
CREATE PACKAGE pkg IS |
FUNCTION f1 RETURN INT; |
END; |
/
|
CREATE PACKAGE BODY pkg AS |
vc INT := 0; |
CURSOR cur IS SELECT 1 AS c FROM DUAL; -- A cursor in the top level block |
FUNCTION f1 RETURN INT AS |
BEGIN |
OPEN cur; |
FETCH cur INTO vc; |
CLOSE cur; |
RETURN vc; |
END; |
END; |
/
|
SELECT pkg.f1 FROM DUAL; |
A similar script in MariaDB fails on the cursor declatation:
SET sql_mode=ORACLE; |
DROP PACKAGE pkg; |
|
DELIMITER /
|
CREATE PACKAGE pkg IS |
FUNCTION f1 RETURN INT; |
END; |
/
|
CREATE PACKAGE BODY pkg AS |
vc INT := 0; |
CURSOR cur IS SELECT 1 AS c FROM DUAL; -- A cursor in the top level block |
FUNCTION f1 RETURN INT AS |
BEGIN |
OPEN cur; |
FETCH cur INTO vc; |
CLOSE cur; |
RETURN vc; |
END; |
END; |
/
|
DELIMITER ;
|
SELECT pkg.f1() FROM DUAL; |
ERROR 1064 (42000): You have an error in your SQL syntax ...near 'CURSOR cur IS SELECT 1 AS c FROM DUAL;...
|
Attachments
Issue Links
- duplicates
-
MDEV-36053 CURSOR declarations in PACKAGE BODY
-
- In Progress
-
- relates to
-
MDEV-20034 Add support for the pre-defined weak SYS_REFCURSOR
-
- Stalled
-