html 中的 oracle 结果集类似于 SQL*Plus(仅使用 SQL)
oracle result set in html similar to SQL*Plus (using SQL only)
直接举个例子,下面是我想做的(不使用 SQLPlus):
在SQL加上:
SQL> set feed off markup html on
SQL> select * from emp where rownum<=2;
给出此输出:
<p>
<table border="1" width="90%" summary="Script output">
<tr>
<th scope="col">
EMPNO
</th>
<th scope="col">
ENAME
</th>
<th scope="col">
JOB
</th>
<th scope="col">
MGR
</th>
<th scope="col">
HIREDATE
</th>
<th scope="col">
SAL
</th>
<th scope="col">
COMM
</th>
<th scope="col">
DEPTNO
</th>
</tr>
<tr>
<td align="right">
7369
</td>
<td>
SMITH
</td>
<td>
CLERK
</td>
<td align="right">
7902
</td>
<td>
17-DEC-80
</td>
<td align="right">
800
</td>
<td align="right">
</td>
<td align="right">
20
</td>
</tr>
<tr>
<td align="right">
7499
</td>
<td>
ALLEN
</td>
<td>
SALESMAN
</td>
<td align="right">
7698
</td>
<td>
20-FEB-81
</td>
<td align="right">
1600
</td>
<td align="right">
300
</td>
<td align="right">
30
</td>
</tr>
</table>
<p>
仅在 SQL 中有直接的方法吗? (例如,使用一个或多个 Oracle 的 XML 函数)。欢迎任何指点。
编辑:
为了更清楚一点,我不关心空格或 p
/ table
标签和每个标签的属性,只关心结构化的 html.
Oracle 11g R2 架构设置:
CREATE TABLE EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO ) AS
SELECT 7369, 'Smith', 'Clerk', 7902, DATE '1980-12-17', 800, CAST( NULL AS NUMBER(5,2) ), 20 FROM DUAL UNION ALL
SELECT 7499, 'Allen', 'Salesman', 7698, DATE '1981-02-20', 1600, 300, 30 FROM DUAL
查询 1:
SELECT XMLElement(
"p",
XMLElement(
"table",
XMLElement( "tr",
XMLForest(
'empno' AS "th",
'ename' AS "th",
'job' AS "th",
'mgr' AS "th",
'hiredate' AS "th",
'sal' AS "th",
'comm' AS "th",
'deptno' AS "th"
)
),
XMLAgg(
XMLElement( "tr",
XMLForest(
empno AS "td",
ename AS "td",
job AS "td",
mgr AS "td",
hiredate AS "td",
sal AS "td",
comm AS "td",
deptno AS "td"
)
)
)
)
).getClobVal() AS XML
FROM EMP
| XML |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| <p><table><tr><th>empno</th><th>ename</th><th>job</th><th>mgr</th><th>hiredate</th><th>sal</th><th>comm</th><th>deptno</th></tr><tr><td>7369</td><td>Smith</td><td>Clerk</td><td>7902</td><td>1980-12-17</td><td>800</td><td>20</td></tr><tr><td>7499</td><td>Allen</td><td>Salesman</td><td>7698</td><td>1981-02-20</td><td>1600</td><td>300</td><td>30</td></tr></table></p> |
直接举个例子,下面是我想做的(不使用 SQLPlus): 在SQL加上:
SQL> set feed off markup html on
SQL> select * from emp where rownum<=2;
给出此输出:
<p>
<table border="1" width="90%" summary="Script output">
<tr>
<th scope="col">
EMPNO
</th>
<th scope="col">
ENAME
</th>
<th scope="col">
JOB
</th>
<th scope="col">
MGR
</th>
<th scope="col">
HIREDATE
</th>
<th scope="col">
SAL
</th>
<th scope="col">
COMM
</th>
<th scope="col">
DEPTNO
</th>
</tr>
<tr>
<td align="right">
7369
</td>
<td>
SMITH
</td>
<td>
CLERK
</td>
<td align="right">
7902
</td>
<td>
17-DEC-80
</td>
<td align="right">
800
</td>
<td align="right">
</td>
<td align="right">
20
</td>
</tr>
<tr>
<td align="right">
7499
</td>
<td>
ALLEN
</td>
<td>
SALESMAN
</td>
<td align="right">
7698
</td>
<td>
20-FEB-81
</td>
<td align="right">
1600
</td>
<td align="right">
300
</td>
<td align="right">
30
</td>
</tr>
</table>
<p>
仅在 SQL 中有直接的方法吗? (例如,使用一个或多个 Oracle 的 XML 函数)。欢迎任何指点。
编辑:
为了更清楚一点,我不关心空格或 p
/ table
标签和每个标签的属性,只关心结构化的 html.
Oracle 11g R2 架构设置:
CREATE TABLE EMP ( EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO ) AS
SELECT 7369, 'Smith', 'Clerk', 7902, DATE '1980-12-17', 800, CAST( NULL AS NUMBER(5,2) ), 20 FROM DUAL UNION ALL
SELECT 7499, 'Allen', 'Salesman', 7698, DATE '1981-02-20', 1600, 300, 30 FROM DUAL
查询 1:
SELECT XMLElement(
"p",
XMLElement(
"table",
XMLElement( "tr",
XMLForest(
'empno' AS "th",
'ename' AS "th",
'job' AS "th",
'mgr' AS "th",
'hiredate' AS "th",
'sal' AS "th",
'comm' AS "th",
'deptno' AS "th"
)
),
XMLAgg(
XMLElement( "tr",
XMLForest(
empno AS "td",
ename AS "td",
job AS "td",
mgr AS "td",
hiredate AS "td",
sal AS "td",
comm AS "td",
deptno AS "td"
)
)
)
)
).getClobVal() AS XML
FROM EMP
| XML |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| <p><table><tr><th>empno</th><th>ename</th><th>job</th><th>mgr</th><th>hiredate</th><th>sal</th><th>comm</th><th>deptno</th></tr><tr><td>7369</td><td>Smith</td><td>Clerk</td><td>7902</td><td>1980-12-17</td><td>800</td><td>20</td></tr><tr><td>7499</td><td>Allen</td><td>Salesman</td><td>7698</td><td>1981-02-20</td><td>1600</td><td>300</td><td>30</td></tr></table></p> |