日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
詳解如何在Oracle中連接輸出結(jié)果

一個(gè)偶然的機(jī)會(huì),看到ASK TOM上的一個(gè)問題(http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:229614022562),是關(guān)于查詢結(jié)果字符串連接的。下圖是對(duì)一個(gè)視圖(視圖代碼附后,全部操作是在Oracle 10g中的HR schema中完成的)進(jìn)行查詢得到的常見的結(jié)果。

創(chuàng)新互聯(lián)執(zhí)著的堅(jiān)持網(wǎng)站建設(shè),小程序制作;我們不會(huì)轉(zhuǎn)行,已經(jīng)持續(xù)穩(wěn)定運(yùn)營十多年。專業(yè)的技術(shù),豐富的成功經(jīng)驗(yàn)和創(chuàng)作思維,提供一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。

department ename

marketing  hartstein

marketing  fay

purchasing raphaely

purchasing khoo

...

it         hunold

it         ernst

...

但是也可能遇到需要下面這樣的結(jié)果。

department ename

purchasing raphely,khoo,baida,tobias,himuro,colmenares

it         hunold,ernst,austin,pataballa,lorentz

marketing  hartstein,fay

CREATEORREPLACEVIEWd_employeeAS

SELECTd.department_name department,

      e.last_name ename

 FROMdepartments d,

      employees e

 WHEREd.department_id = e.department_idAND

      d.department_nameIN('IT','Marketing','Purchasing');

為此,Tom大師提供了兩種解決方案,如下:

方法一:

使用靜態(tài)的SQL從表中選出需要進(jìn)行連接的所有數(shù)據(jù)。

CREATEORREPLACEFUNCTIONCONCAT(P_DEPINVARCHAR2)RETURNVARCHAR2IS

 L_STRVARCHAR2(200)DEFAULTNULL;

 L_SEPVARCHAR2(200)DEFAULTNULL;

BEGIN

 FORRCIN(SELECTENAMEFROMD_EMPLOYEEWHEREDEPARTMENT = P_DEP)LOOP

   L_STR := L_STR || L_SEP || RC.ENAME;

   L_SEP :=',';

 ENDLOOP;

 RETURNL_STR;

END;

使用下列查詢語句查詢:

SELECTd.department, hr.concat(d.department) employees

 FROMd_employee d

 GROUPBYdepartment;

方法二:

使用動(dòng)態(tài)SQL,傳入關(guān)鍵列(需求中的department)和那一列的一個(gè)值,以及需要實(shí)際進(jìn)行連接的列(需求中的ename)以及表。

CREATEORREPLACEFUNCTIONCONCAT2(P_KEY_NAME      INVARCHAR2,

        P_KEY_VAL       INVARCHAR2,

        P_OTHER_COL_NAMEINVARCHAR2,

        P_TNAME         INVARCHAR2)

 RETURNVARCHAR2AS

 TYPERCISREFCURSOR;

 L_STRVARCHAR2(4000);

 L_SEPVARCHAR2(200);

 L_VALVARCHAR2(4000);

 L_CUR RC;

BEGIN

 OPENL_CURFOR'select '|| P_OTHER_COL_NAME ||' from '|| P_TNAME ||' where '|| P_KEY_NAME ||' = :x '

   USINGP_KEY_VAL;

 LOOP

   FETCHL_CUR

     INTOL_VAL;

   EXITWHENL_CUR%NOTFOUND;

   L_STR := L_STR || L_SEP || L_VAL;

   L_SEP :=',';

 ENDLOOP;

 CLOSEL_CUR;

 RETURNL_STR;

END;

使用下列查詢語句查詢:

SELECTd.department, concat2('department', d.department,'ename','d_employee')FROMd_employee d

 GROUPBYd.department;

Tom大師還提到,如果你已經(jīng)確切知道了需要連接顯示的字段所包含的值的列表(比如,只包含A、T、L三個(gè)值),那么建議使用DECOD()方法。可以查看下面這個(gè)鏈接:http://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:124812348063

【編輯推薦】

  1. Oracle設(shè)置系統(tǒng)參數(shù)進(jìn)行性能優(yōu)化
  2. Oracle 10g RAC連接錯(cuò)誤的處理
  3. 淺談Oracle性能優(yōu)化可能出現(xiàn)的問題

分享題目:詳解如何在Oracle中連接輸出結(jié)果
網(wǎng)址分享:http://www.5511xx.com/article/djgejsc.html