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); 
相关问题