3

我需要对记录表使用可调用语句。我知道如何传递字符串、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

您可以将callableStatement.setObjectStruct类型一起使用。

可以_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;

然后将可调用语句中的对象绑定到 Struct。

于 2012-06-07T19:19:07.570 回答