0

我定義我的表用戶類型:如何聲明和通過用戶輸入表中的Oracle SQL Developer

create or replace TYPE My_Type AS OBJECT 
( 
    Field1 NVARCHAR2(20), 
    Field2 NVARCHAR2(20) 
); 

create or replace TYPE My_Type_Table 
AS TABLE OF My_Type; 

然後我定義的存儲過程:

PROCEDURE sp_GetSomething 
(
    table_in My_Type_Table, 
    cur_our SYS_REFCURSOR 
); 

我是能夠成功地把這種程序,但不是來自Sql Develoder。 我不知道如何定義和傳遞表類型的輸入參數。 我試圖用這樣的事情,但它不工作:

DECLARE 
    table_in My_Type_Table; 
    cur_our SYS_REFCURSOR; 
BEGIN 
    table_in := My_Type_Table(My_Type('field 1 value', 'field 2 value')); 

    package.sp_GetSomething(
    table_in => table_in , 
    cur_our => cur_our 
); 
    :cur_our := cur_our ; 
END; 

和錯誤是:

> ORA-06550: line 11, column 20: 
> PLS-00382: expression is of wrong type 

請指教。

回答

1

嘗試定義輸入表:

SELECT My_Type(Field1,Field2) 
    BULK COLLECT INTO table_in 
    FROM (SELECT 'Field1 Value' AS Field1, 'Field2 Value' AS Field2 FROM DUAL); 
相關問題