如何在 Pl/SQL 中以這種模式列印資料
1~ABC~20-June-1990^2~DEF~03-Aug-1999^3~IJK~19-DEC-1976^....
這里這個 1, ABC, 20-June-1990 同樣其他 2, DEF, 03-Aug-1999 存盤在表中。我必須僅在 ROW 中獲取此資料并以上述格式列印。
我完成了資料獲取,但沒有得到任何關于這種模式列印的線索。
uj5u.com熱心網友回復:
PL/SQL 讀取“Oracle”。如果是這樣,則連接單獨的列值并使用listagg將它們全部聚合到最終結果中。
也許您不需要 PL/SQL,因為 SQL 至少可以通過兩種方式做到這一點。
樣本資料:
SQL> select empno, ename, to_char(hiredate, 'dd-Mon-yyyy') hiredate
2 from emp
3 where deptno = 10;
EMPNO ENAME HIREDATE
---------- ---------- -----------
7782 CLARK 09-Jun-1981
7839 KING 17-Nov-1981
7934 MILLER 23-Jan-1982
SQL>
結果:
SQL> select listagg(empno || '~' || ename || '~' || to_char(hiredate, 'dd-Mon-yyyy'), '^')
2 within group (order by empno) as result
3 from emp
4 where deptno = 10;
RESULT
--------------------------------------------------------------------------------
7782~CLARK~09-Jun-1981^7839~KING~17-Nov-1981^7934~MILLER~23-Jan-1982
如果最終結果超過 4000 個字符(是嗎?),則listagg由于其限制而無法作業 - 在這種情況下,您將使用XMLAGGfunction.
或者:如果它真的是 PL/SQL,您總是可以將該字串連接到本地宣告的 CLOB 資料型別變數中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/504051.html
標籤:数据库 oracle-sqldeveloper plsql开发者
上一篇:什么是反向外鍵和普通外鍵
下一篇:如何將3列合并為一列
