最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle單個(gè)字段多記錄拼接方式

 更新時(shí)間:2024年07月03日 09:47:24   作者:dongdong咚咚咚  
這篇文章主要介紹了Oracle單個(gè)字段多記錄拼接方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1.sql提供以下兩種查詢方式

來拼接同一個(gè)字段多個(gè)記錄結(jié)果

1.replace+wm_concat
2.listagg within group

兩種方式可實(shí)現(xiàn)一樣的效果。

快速腳本:替換 表名 與 字段名 執(zhí)行即可驗(yàn)證。

select (
-- 1.replace+wm_concat
select replace(wm_concat(a.name),',','|') from teacher_leader a
) res1,
-- 2.listagg within group
(
select listagg(a.name,'|') within group (order by a.name) from teacher_leader a
) res2
from dual; 

實(shí)測(cè):

2.如果報(bào)錯(cuò)

ORA-00904: “WM_CONCAT”: 標(biāo)識(shí)符無效

可進(jìn)行如下處理解決,定義type部分參考這篇文章

注意: 如果你沒有system用戶,可能是一個(gè)用戶擁有多個(gè)角色,那么上面的參考博客對(duì)你不適用。

可用下面的方案:

2.1作為SYSDBA角色登錄

2.2 給普通用戶授權(quán)

GRANT create type to shop;
GRANT create procedure to shop;

登錄shop(以普通用戶normal的身份登錄)

2.3 創(chuàng)建type并創(chuàng)建函數(shù)【wm_concat】

--在shop用戶作為normal角色會(huì)話下創(chuàng)建可用的wm_concat函數(shù),直接執(zhí)行以下語句
--定義類型
CREATE OR REPLACE TYPE WM_CONCAT_IMPL AS OBJECT
(
CURR_STR VARCHAR2(32767), 
STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT WM_CONCAT_IMPL) RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL,
P1 IN VARCHAR2) RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN WM_CONCAT_IMPL,
RETURNVALUE OUT VARCHAR2,
FLAGS IN NUMBER)
RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL,
SCTX2 IN WM_CONCAT_IMPL) RETURN NUMBER
);
/
 
--定義類型body:
CREATE OR REPLACE TYPE BODY WM_CONCAT_IMPL
IS
STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT WM_CONCAT_IMPL)
RETURN NUMBER
IS
BEGIN
SCTX := WM_CONCAT_IMPL(NULL) ;
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL,
P1 IN VARCHAR2)
RETURN NUMBER
IS
BEGIN
IF(CURR_STR IS NOT NULL) THEN
CURR_STR := CURR_STR || ',' || P1;
ELSE
CURR_STR := P1;
END IF;
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN WM_CONCAT_IMPL,
RETURNVALUE OUT VARCHAR2,
FLAGS IN NUMBER)
RETURN NUMBER
IS
BEGIN
RETURNVALUE := CURR_STR ;
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL,
SCTX2 IN WM_CONCAT_IMPL)
RETURN NUMBER
IS
BEGIN
IF(SCTX2.CURR_STR IS NOT NULL) THEN
SELF.CURR_STR := SELF.CURR_STR || ',' || SCTX2.CURR_STR ;
END IF;
RETURN ODCICONST.SUCCESS;
END;
END;
/
--自定義行變列函數(shù):
CREATE OR REPLACE FUNCTION wm_concat(P1 VARCHAR2)
RETURN VARCHAR2 AGGREGATE USING WM_CONCAT_IMPL ;
/

2.4 最后一步,創(chuàng)建同義詞及授權(quán)

--創(chuàng)建完成,給其創(chuàng)建同義詞及授權(quán),以供其他用戶能正常使用。
create public synonym WM_CONCAT_IMPL for shop.WM_CONCAT_IMPL
/
create public synonym wm_concat for shop.wm_concat
/
grant execute on WM_CONCAT_IMPL to public
/
grant execute on wm_concat to public
/

驗(yàn)證

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • win7下oracle 10g安裝圖文教程

    win7下oracle 10g安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了win7下oracle 10g安裝圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • oracle表的簡(jiǎn)單操作步驟

    oracle表的簡(jiǎn)單操作步驟

    這篇文章主要介紹了oracle表的簡(jiǎn)單操作步驟,需要的朋友可以參考下
    2017-06-06
  • Oracle往某表批量插入記錄的幾種實(shí)現(xiàn)方法

    Oracle往某表批量插入記錄的幾種實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Oracle往某表批量插入記錄的幾種實(shí)現(xiàn)方法,Oracle批量插入語句與其他數(shù)據(jù)庫不同,文中通過代碼實(shí)例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Oracle 存儲(chǔ)過程加密方法

    Oracle 存儲(chǔ)過程加密方法

    Oracle 存儲(chǔ)過程加密方法,需要的朋友可以參考下。
    2009-10-10
  • Oracle計(jì)算時(shí)間差為毫秒的實(shí)現(xiàn)代碼

    Oracle計(jì)算時(shí)間差為毫秒的實(shí)現(xiàn)代碼

    這里我是用分隔字符串單獨(dú)計(jì)算毫秒部分,如果有更好的辦法,請(qǐng)大家分享一下,下面是查詢時(shí)間差為毫秒的模板,需要的朋友可以參考下
    2017-03-03
  • 快速解除oracle dataguard的方法

    快速解除oracle dataguard的方法

    文章介紹了如何快速解除Oracle Data Guard配置的過程,包括備份SPFILE到PFILE、調(diào)整主庫模式、修改主庫DG配置參數(shù)、刪除Standby Log以及重啟數(shù)據(jù)庫等步驟,感興趣的朋友一起看看吧
    2025-03-03
  • Oracle數(shù)據(jù)庫自定義類型type的用法詳解

    Oracle數(shù)據(jù)庫自定義類型type的用法詳解

    這篇文章主要介紹了Oracle數(shù)據(jù)庫自定義類型type的用法詳解,Oracle?數(shù)據(jù)庫的概念和其它數(shù)據(jù)庫不一樣,這里的數(shù)據(jù)庫是一個(gè)操作系統(tǒng)只有一個(gè)庫,可以看作是?Oracle?就只有一個(gè)大數(shù)據(jù)庫,需要的朋友可以參考下
    2023-07-07
  • ORACLE學(xué)習(xí)筆記-新建用戶及建表篇

    ORACLE學(xué)習(xí)筆記-新建用戶及建表篇

    Oracle系統(tǒng),即是以O(shè)racle關(guān)系數(shù)據(jù)庫為數(shù)據(jù)存儲(chǔ)和管理作為構(gòu)架基礎(chǔ),構(gòu)建出的數(shù)據(jù)庫管理系統(tǒng)。世界第一個(gè)支持SQL語言的商業(yè)數(shù)據(jù)庫,定位于高端工作站,以及作為服務(wù)器的小型計(jì)算機(jī),Oracle公司的整個(gè)產(chǎn)品線包括數(shù)據(jù)庫服務(wù)器、企業(yè)商務(wù)應(yīng)用套件、應(yīng)用開發(fā)和決策支持工具
    2014-08-08
  • 在oracle 數(shù)據(jù)庫中查看一個(gè)sql語句的執(zhí)行時(shí)間和SP2-0027錯(cuò)誤

    在oracle 數(shù)據(jù)庫中查看一個(gè)sql語句的執(zhí)行時(shí)間和SP2-0027錯(cuò)誤

    oracle 數(shù)據(jù)庫中查看一個(gè)sql語句的執(zhí)行時(shí)間和SP2-0027錯(cuò)誤的解決方法
    2009-10-10
  • Oracle存儲(chǔ)過程與函數(shù)的詳細(xì)使用教程

    Oracle存儲(chǔ)過程與函數(shù)的詳細(xì)使用教程

    存儲(chǔ)過程和函數(shù)在Oracle中被稱為子程序,是指被命名的PL/SQL塊,這種塊可以帶有參數(shù),可以被多次調(diào)用,下面這篇文章主要給大家介紹了關(guān)于Oracle存儲(chǔ)過程與函數(shù)的詳細(xì)使用,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07

最新評(píng)論

黑山县| 蒙阴县| 杭锦后旗| 翁源县| 昌乐县| 宜兴市| 三河市| 遵义县| 福建省| 张掖市| 余干县| 双江| 富源县| 涪陵区| 高青县| 霍州市| 钟祥市| 韩城市| 永修县| 正安县| 叶城县| 宿迁市| 马关县| 镶黄旗| 宁武县| 辽宁省| 伊春市| 柳州市| 永福县| 济源市| 菏泽市| 连云港市| 海阳市| 永定县| 安福县| 宁明县| 新乡县| 青州市| 灯塔市| 新竹市| 屏东市|