Oracle
在 db<>fiddle 中使用內聯函式創建視圖
我正在嘗試在 db<>fiddle 中使用 inline 函式創建視圖。
我現在已經刪除了 CREATE VIEW 部分,我只是想執行查詢,只是為了解決根本問題。
select /*+ WITH_PLSQL */ calc from ( with function calculator (m number, r number) return number is begin return m * r; end calculator; select calculator(3, 2) as calc from dual ); /
當我在db<>fiddle中執行該程式碼時,出現錯誤:
ORA-00905: missing keyword
我究竟做錯了什麼?
什麼地方出了錯
- 該功能在 11.2 中不存在
- 您使用了問題 SQL,而不是答案 SQL
更正
我的回答是一樣的。在最外面的
WITH
語句中定義它。with function calculator (m number, r number) return number is begin return m * r; end calculator; select calculator(3, 2) as calc from dual
以@Michael Kutz 的回答為基礎:
以下似乎適用於 db<>fiddle 的Oracle 18c版本。
(我認為 12c 及更高版本支持內聯函式):
create or replace view v1 as ( select /*+ WITH_PLSQL */ calc from ( with function calculator (m number, r number) return number is begin return m * r; end calculator; select calculator(3, 2) as calc from dual ) )
編輯:
不幸的是,任何引用該視圖的查詢都需要
/*+ WITH_PLSQL */
在其中包含選擇提示:select /*+ WITH_PLSQL */ * from v1
這對我來說是一個交易破壞者。將使用視圖的系統是 COTS 系統。我無法將提示添加到將引用視圖的查詢中。