论坛首页 Java企业应用论坛

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

浏览 8349 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-22  
(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中做如下配置。
    <procedure id="save" parameterClass="map">
        <![CDATA[
        DECLARE
        ]]>
        <dynamic>
            <isNotEmpty property="types">
                <iterate open="v_idArray IDARRAY := IDARRAY(" close=");" property="types" conjunction=",">
                <![CDATA[#types[].id#]]>
                </iterate>
            </isNotEmpty>
            <isEmpty property="types">
                <![CDATA[v_idarray IDARRAY:= IDARRAY( );]]>
            </isEmpty>
        </dynamic>
        <![CDATA[
        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;
        ]]>
    </procedure>


   发表时间:2008-12-22  


类似的方法也可以用来处理其它Oracle的自定义数据类型,比如
create or replace type Item
AS
  object (
  ID                VARCHAR2(50),
  money             NUMBER
  );
/
create or replace type ItemArray as varray(255) of Item;
/
0 请登录后投票
   发表时间:2009-02-16   最后修改:2009-02-16
晚了一天才看到...直接jdbc做掉了

现在的问题是,这种方式下,能在ibatis中能实现直接以get("TYPE_字段名")的方式取得值么?

jdbc只能以数组方式取值.这点让我不太舒服
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics