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

时间:2023-03-08 19:32:02

找了好久,网上也没示例,全是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;

搞定。