Oracle-12c

在 Oracle 12c 中,當我只有隻讀權限時,是否有 CREATE TYPE 的替代方法?

  • January 22, 2020

我對 Oracle 12c 系統具有隻讀訪問權限,在該系統中,我獲得額外權限或讓 DBA 代表我更改任何內容的可能性為零(例如為我執行 CREATE TYPEs)。

我正在使用 Oracle 12c 功能WITH FUNCTION myfunc() .. SELECT ..創建函式作為我的 SQL 查詢的一部分,效果很好。

除了,我想做類似的事情,如下所示通常 在 WITH FUNCTION myfunc(p_numbers t_numbers) .. SELECT .. 哪裡聲明: 我做不到。t_numbers``CREATE TYPE t_numbers AS TABLE OF NUMBER;

CREATE TYPE有沒有其他方法可以在沒有特權的情況下完成這種“內聯”功能?我希望能夠將任意數量的數字傳遞給內聯函式,如本文所述

SYS.ODCINUMBERLIST有一個名為which is a的內置類型VARRAY(32767) of NUMBER,並且EXECUTE授予每個人(PUBLIC)的特權。您最多可以將其用於 32767 個號碼,例如:

with function f1 (p_numbers SYS.ODCINUMBERLIST) return number
as
begin
return p_numbers.count;
end;
select f1(SYS.ODCINUMBERLIST(1,2,3,4,5,6,7)) from dual;
/

F1(SYS.ODCINUMBERLIST(1,2,3,4,5,6,7))
-------------------------------------
                                   7

SYS.FI_NUMERICALS在 19c 中,還有另一種稱為a 的內置類型TABLE of NUMBER,任何人都可以以類似的方式使用。

with function f1 (p_numbers SYS.FI_NUMERICALS) return number
as
begin
return p_numbers.count;
end;
select f1(SYS.FI_NUMERICALS(1,2,3,4,5,6,7)) from dual;
/

F1(SYS.FI_NUMERICALS(1,2,3,4,5,6,7))
------------------------------------
                                  7

我沒有找到後者的任何文件或參考資料。

引用自:https://dba.stackexchange.com/questions/257998