天天看點

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;      

搞定。

myBatIs.Net 調用Oracle 存儲過程傳回遊标