2

Oracle でストアド プロシージャを呼び出す必要があります。パラメータの 1 つは、次のようなユーザー定義型です。

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 に答える