myBatIs.Net 调用Oracle 存储过程返回游标

找了好久,网上也没示例,全是java的,没办法,后来看到一个网上别人写的例子。

http://www.myfirm.cn/blog/article/Control/13.html

上面照套还是出错,我X,没找到类的属性,那么灵机一动,应该是个结果集,就List了,给类加个属性

搞定。

public class Product
    {
        public int ProductId { get; set; }
        public string ProductName { get; set; }

        public List<Product> result { get; set; }
    }  
}

xml配置

 <resultMaps>
    <!-- 映射可以用在下面的语句设置中 -->
    <resultMap id="GetAllProductsResult" class="Product">
      <result property="ProductId" type="int" column="ProductId" dbType="number"  />
      <result property="ProductName" type="string" column="ProductName" dbType="varchar"  />
    </resultMap>

  </resultMaps>

  <parameterMaps>
    <!--注意:parameterMap中的参数个数和顺序要和ProcGetPersonByName存储过程中的一致-->
    <parameterMap id="ParamSelect" class="Product">

      <parameter property="ProductName" coloumn="VPRODUCTNAME"/>
     
      <!--设置返回的数据,数据库类型为Cursor-->
      <parameter property="result" column="P_CUR"  dbType="Cursor"  direction="Output"/>
      
     
    </parameterMap>
  </parameterMaps>

  <statements>
    <procedure id="ProcGetProductbyName" parameterMap="ParamSelect"  resultMap="GetAllProductsResult">
      ProcGetProductbyName
    </procedure>

Oracle过程

CREATE OR REPLACE PROCEDURE PROCGETPRODUCTBYNAME(VPRODUCTNAME IN VARCHAR,
                                                 P_CUR        OUT SYS_REFCURSOR) AS
BEGIN

  OPEN P_CUR FOR
    SELECT * FROM PRODUCT T WHERE T.PRODUCTNAME LIKE VPRODUCTNAME || '%';

END;

搞定。

原文地址:https://www.cnblogs.com/Chareree/p/4171068.html