例如,您有一张桌子T
:
SQL> create table t as select level a, 'b' b from dual connect by level<=10;
Table created.
SQL> select * from t;
A B
---------- -
1 b
2 b
3 b
4 b
5 b
6 b
7 b
8 b
9 b
10 b
10 rows selected.
您的查询应该是这样的:
SELECT XMLQuery(
'for $i in fn:collection("oradb:/XTENDER/T")/ROW/A/text()
return $i'
returning content
) as res
FROM DUAL;
RES
----------------------------
12345678910
即fn:collection()
参数应该是"oradb:/SCHEMA/TABNAME"
,然后你应该指定列名之前的/ROW/COLNAME
位置/ROW
是强制性的。
事实上,如果这真的是你想要的,你不需要for
:
SELECT XMLQuery('fn:collection("oradb:/XTENDER/T")/ROW/A/text()' returning content) res FROM DUAL;
尽管我会将这些值与 连接起来,
,如下所示:
SELECT
XMLQuery('
fn:string-join(
fn:collection("oradb:/XTENDER/T")/ROW/A/text()
,","
)
' returning content) as res
FROM DUAL;
RES
--------------------------------------------------
1,2,3,4,5,6,7,8,9,10
或者 T 中所有列的几个变体:
SELECT
XMLQuery('
fn:string-join(
fn:collection("oradb:/XTENDER/T")/ROW/*
,","
)
' returning content) as res
FROM DUAL;
RES
--------------------------------------------------
1,b,2,b,3,b,4,b,5,b,6,b,7,b,8,b,9,b,10,b
SELECT
XMLQuery('
fn:string-join(
for $i in fn:collection("oradb:/XTENDER/T")/ROW return string-join($i/*, ",")
,"; "
)
' returning content) as res
FROM DUAL;
RES
--------------------------------------------------
1,b; 2,b; 3,b; 4,b; 5,b; 6,b; 7,b; 8,b; 9,b; 10,b