Oracle利用函數實現多行資料合併的效果

來源:互聯網
上載者:User

做了兩天,終於把一個要的顯示結果做出來了。。。
這裡只是把我的學習過程總結一下,對那些需要的人提供協助!

前提:
公司讓我們新人陪服務端到手機端的xml檔案,說白了就是ORM映射的原理,但是略有不同,需要手動的去寫Oracle的指令碼代碼。其中有個欄位需要把各個列的資料合併。
就是把中的YPTSFLMC的欄位合并成一行,查過很對的資料,其中最簡單用Oracle內建的wm_concat函數了,但是我查的資料太多了,用wm_concat函數做不出來,只能自己手寫一個自訂函數。

首先先看一下代碼:

 1 /* Formatted on 2013-1-11 13:23:55 (QP5 v5.185.11230.41888) */ 2 CREATE OR REPLACE FUNCTION TypeStr (MEDCODE VARCHAR2) 3    RETURN VARCHAR2 4 AS 5    STR   VARCHAR2 (1000);                                           /*返回的資料集*/ 6 BEGIN 7    DECLARE 8       v_medCode VARCHAR2 (100);                                 /*存放臨時變數的地方*/ 9 10       CURSOR D_cursor11       IS12         SELECT T.STYPE_NAME13         FROM HEALIDEA_MEDICINE_TYPE_SPECIAL T,HEALIDEA_MEDICINE_STYPE S14         WHERE (S.MED_STYPE_CODE=T.STYPE_CODE) AND (S.MED_CODE=MEDCODE);15    BEGIN16       OPEN D_cursor;17     loop18     fetch D_cursor into v_medCode;19     EXIT WHEN D_cursor%NOTFOUND;20     if length(STR) > 0 THEN21        STR := STR ||','|| v_medCode;22     ELSE23        STR := STR || v_medCode;24     END IF;25     END LOOP;26     close D_cursor;27     end;28     RETURN STR;29 END TypeStr;

函數的基本意思是根據MEDCODE來查詢所有的單列結果集,在吧這個單列的結果集拼接起來做成一行。如果你看不懂的話,那先學習一下Oracle的基本文法吧,還有遊標(其實我自己也是剛剛接觸Oracle不到半個月,原本學習的是sql server,公司用的資料庫是oracle,入公司隨俗吧)。

小問題:
在測試的階段,還是有出現了一個小問題,就是本來是顯示兩條資料的,現在用自己定義的函數,雖然把兩個欄位合并了,但是顯示的資料還是兩條。

難道自己寫了半天的函數就這麼廢掉了,幸好腦子機靈,想到了Oracle也有Distinct這個關鍵字。

結果:

這個就是我想要的資料了,哈哈成功的喜悅呀

本來也是剛剛接觸Oracle不久,還有很多的問題也是和同事一起探討中得到的答案。如果有什麼不對,請指出,本人會及時改正!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.