为什么不下面的代码编译无法把WITH FUNCTION子句中BEGIN/END块
DECLARE
c number;
BEGIN
WITH
FUNCTION calculate(i IN NUMBER) RETURN NUMBER
AS
r number;
BEGIN
r := i*i;
RETURN r;
END;
select calculate(1) INTO c from dual;
END;
给出以下错误:
Error report -
*ORA-06550: line 5, column 10:
PL/SQL: ORA-00905: missing keyword
ORA-06550: line 4, column 1:
PL/SQL: SQL Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
Cause: Usually a PL/SQL compilation error.
Action:*
而
WITH
FUNCTION calculate(i IN NUMBER) RETURN NUMBER
AS
r number;
BEGIN
r := i*i;
RETURN r;
END;
select calculate(1) from dual;
编译?
Oracle版本信息
- Oracle数据库12c的企业版发行12.1.0.2.0 - 64位生产
- PL/SQL发布12.1.0.2.0 - 生产
包含您从第一个版本获得的错误很有帮助。但是'select into'与'select'不太一样。 ''with function ...'语法可能还没有成为PL/SQL版本;尽管由于语法图甚至没有显示CTE语法,所以很难说清楚。你正在使用12cR1还是12cR2 - 它可能在不同版本之间发生变化? –
@AlexPoole我已添加您请求的信息。 – user2672165