3

レコード テーブルに callable ステートメントを使用する必要があります。string、int などの引数を渡す方法を知っています。

callableStatement.setString(1, variable);
callableStatement.setInt(2, variable);

しかし、カスタム タイプのレコード リストの場合はどうすればよいでしょうか。を作成しstructてどうにかして送信することは考えられますが、その方法がわかりません。

使用するカスタム テーブルと手順は次のとおりです。

type transaction is record(
     trans_id   varchar2(20)
    ,issuer_name varchar2(300)
    ,location_name varchar2(300)
    ,trans_date    date
    ,issue_date      date);
  type transaction_list is table of transaction;

  procedure set_transaction
  (
    caller_id     in varchar2
   ,trans_list   in transaction_list
   ,return_code out varchar2
  );
4

2 に答える 2

1

Struct型と一緒にcallableStatement.setObjectを使用できます。

この良い例は_demoInsertUsingCallableStmt、このページのメソッドにあります: StructInsertExample

于 2012-06-07T18:43:35.860 に答える
1

レコードをタイプとして定義することはできません。代わりに OBJECT を使用できます。

CREATE OR REPLACE TYPE MY_TEST_REC AS OBJECT (
 id_ varchar2(30),
 name_ varchar2(30)
);

CREATE TABLE MY_TEST OF MY_TEST_REC;

create or replace package my_p is
  procedure proc(arg_  IN OUT MY_TEST_REC);
END;

create or replace package body my_p is
  procedure proc(arg_  IN OUT MY_TEST_REC)
  IS  
  BEGIN
    arg_.name_ := 'BAR';
  END;
END;

次に、callable ステートメント内のオブジェクトを Struct にバインドします。

于 2012-06-07T19:19:07.570 に答える