爲什麼不下面的代碼編譯無法把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