为什么下面的代码无法编译:
给出以下错误:
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
鉴于:
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 - 它可能在发布之间发生了变化? - Alex Poole