ibatis存储过程中,Oracle VARRAY自定义数据类型做IN参数的处理。

(1)在oracle中有如下自定义数据类型。
create or replace type IdArray as VARRAY(255) of NUMBER;  
(2)同时定义了一个存储过程/包。
CREATE OR REPLACE PACKAGE pkg_auth IS   
PROCEDURE UserAdd(v_loginName IN VARCHAR2,
v_types IN IdArray,
errcode OUT VARCHAR2,
errmsg OUT VARCHAR2);
END pkg_auth;
(3)在pl/sql中进行测试时,使用如下的sql语句
DECLARE
v_idarray IDARRAY:= IDARRAY( 1,2,3 );
BEGIN
pkg_auth.UserAdd(v_loginName => 'xxx'
v_types => v_idArray,
...............);
END;
]]>
(4)因此,在ibatis中做如下配置。
   
DECLARE
]]>










BEGIN
pkg_auth.UserAdd(v_loginName => #loginName,jdbcType=VARCHAR,mode=IN#,
v_types => v_idArray,
errcode => #errCode,jdbcType=INTEGER,mode=OUT#,
errmsg => #errMsg,jdbcType=VARCHAR,mode=OUT#);
END;
]]>



-------------------------------------------------
类似的方法也可以用来处理其它Oracle的自定义数据类型,比如
create or replace type Item   
AS
object (
ID VARCHAR2(50),
money NUMBER
);
/
create or replace type ItemArray as varray(255) of Item;

你可能感兴趣的:(oracle)