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;
搞定。