使用用户定义类型数组调用Oracle Stored proc

时间:2012-12-18 15:08:03

标签: oracle stored-procedures types

我需要在oracle中调用存储过程。其中一个参数是用户定义的类型,如下所示:

CREATE OR REPLACE TYPE MY_PK AS OBJECT
(
  SOURCE_ID INTEGER,
  ACCT_SYSTEM VARCHAR2(255)
)
/

CREATE OR REPLACE TYPE MY_PK_ARR AS TABLE OF MY_PK
/

PROCEDURE get_data(pk_in IN my_pk_arr, my_coursor OUT t_cursor)
IS 
 ...
END

我试着像这样称呼它:

var    pk          my_pk_arr 
var    my_cursor   t_cursor
execute  myschema.mypackage.get_data (pk ,  :my_cursor);

我无法弄清楚如何创建数组。这是可能的还是我需要创建某种表来做它?

由于

1 个答案:

答案 0 :(得分:1)

如果您通过脚本调用它,请将其命名为this。 sqlplus不支持用户定义的数组等。

declare
  v_pk   my_pk_arr;
  v_cur  t_cursor;
begin

  v_pk := MY_PK_ARR(MY_PK(1, 'a'), MY_PK(2, 'b')); -- or build in a loop etc.
  get_data(v_pk, v_cur);

end;
/