[英]Oracle CREATE TYPE and PL/SQL
我們有一個聲明為的Oracle類型:
創建或替換類型its_accountarray;
沒有基本類型。 然后在過程和包中使用此類型(在Java存儲過程中用作數組描述符)。 在過程/包中,它使用擴展函數添加到數組。
<declare section>
v_account latax.ITS_ACCOUNTARRAY := new ITS_accountArray();
...
BEGIN
...
...
v_account.extend(1);
在Java中,它用作:oracle.sql.ARRAY ls_accountARRAY,ls_periodARRAY;
oracle.sql.ArrayDescriptor ad = ArrayDescriptor.createDescriptor(**"ITS_ACCOUNTARRAY"**, oconn);
ls_accountARRAY = new ARRAY(ad, oconn, arg_accounts);
ocs.setARRAY(2, ls_accountARRAY);
我很好奇這是如何工作的。 盡管名稱中包含Array,但它並未定義為數組或表類型,就像我通常看到的那樣。 它有效,但這是合法用法還是我應該明確聲明某種數組類型的類型?
謝謝
山姆
我試圖重現你說的發生了什么,並得到一個錯誤:
CREATE OR REPLACE TYPE its_accountarray;
DECLARE
v its_accountarray := its_accountarray();
BEGIN
null;
END;
/
PLS-00311: the declaration of "ITS_ACCOUNTARRAY" is incomplete or malformed
所以,你可能正在查看錯誤的類型定義(例如,你在錯誤的模式中查看它),或者沒有查看整個類型定義(例如,有一個提供實現的TYPE BODY)。 由於這看起來像嵌套表類型,前者聽起來更有可能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.