【问题标题】:How to declare and pass user typed table in oracle sql developeroracle sql developer中如何声明和传递用户类型表
【发布时间】:2015-01-11 06:11:33
【问题描述】:

我已经定义了我的表用户类型:

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 Developer 中调用。 我不确定如何定义和传递表类型输入参数。 我正在尝试使用类似的东西,但它不起作用:

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

请指教。

【问题讨论】:

    标签: oracle stored-procedures plsql oracle11g oracle-sqldeveloper


    【解决方案1】:

    尝试将输入表定义为:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多