目錄
一、取oracle自定義函數返回的自定義類型。
1.首先創建一個函數返回自定義類型集合
--1.建立自定義類型 CREATE OR REPLACE TYPE UT_BLOCKED_STATISTICS AS OBJECT ( TWO_DPT_CDE VARCHAR2(11), -- TWO_DPT_NME VARCHAR2(111), THREE_DPT_CDE VARCHAR2(11), THREE_DPT_NME VARCHAR2(111), CASE_NUM NUMBER, BLOCKED_NUM NUMBER )
--2.建立自己定義類型集合 CREATE OR REPLACE TYPE "UT_BLOCKED_STATISTICS_LIST" AS TABLE OF UT_BLOCKED_STATISTICS;
--3.創建自定義函數 返回自定義類型集合 --這里用到了Oracle8i 才有的特性 BULK COLLECT [批量插入] create or replace function get_BLOCKED_STATISTICS(BEGINTIME IN DATE, ENDTIME IN DATE) RETURN UT_BLOCKED_STATISTICS_LIST as UT UT_BLOCKED_STATISTICS_LIST; --自定類型集合 BEGIN select UT_BLOCKED_STATISTICS(two_dpt_cde, --這里需要手動顯示 對應自定義類型集合 UT_BLOCKED_STATISTICS_LIST 的字段 two_dpt_nme, Three_dpt_cde, Three_dpt_nme, CASE_NUM, BLOCKED_NUM) BULK COLLECT into UT from (select two_dpt_cde, two_dpt_nme,Three_dpt_cde,Three_dpt_nme,CASE_NUM,BLOCKED_NUM from Mytable where ....); return UT; end;
--4.這里就可以使用table() 查詢自定義函數返回的結果集 像查詢表數據一樣方便 select t.* from table(get_BLOCKED_STATISTICS(to_date('...', 'yyyy-MM-dd HH24:mi:ss'),to_date(.. .))) t where ....
2. EF程序調用
首先創建一個class字段對應數據庫的自定義類型UT_BLOCKED_STATISTICS 的模型類 BlockedStatistics
Context.Database.SqlQuery<BlockedStatistics>(strSql).ToList() //strSql 拼接的sql查詢字符串 //BlockedStatistics 創建的與自定義類型對應的class
//使用的是 EntityFramework.dll v4.0
存過返回自定義類型,怎么在EF中取得返回的值還沒搞定....