2

我需要在 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);

我不知道如何创建数组。这是可能的还是我需要创建某种表格来做到这一点?

谢谢

4

1 回答 1

1

如果您通过脚本调用它,请像这样调用它。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;
/
于 2012-12-18T15:11:38.400 回答