我使用Oracle sqlplus的「設置標記HTML的」 到查詢輸出迅速轉換成HTML報告 -甲骨文sqlplus的HTML報告 - 交替行顏色
這是網上發佈的數據庫報告非常simlpe方式。
但是我錯過了一件事 - 每隔一行交替顯示顏色, 查看大量報告時,這特別有用。
是否有任何方法來嵌入每行的HTML顏色, 就像它使依賴mod(rownum/2) - 偶數/奇數行號?
謝謝!
我使用Oracle sqlplus的「設置標記HTML的」 到查詢輸出迅速轉換成HTML報告 -甲骨文sqlplus的HTML報告 - 交替行顏色
這是網上發佈的數據庫報告非常simlpe方式。
但是我錯過了一件事 - 每隔一行交替顯示顏色, 查看大量報告時,這特別有用。
是否有任何方法來嵌入每行的HTML顏色, 就像它使依賴mod(rownum/2) - 偶數/奇數行號?
謝謝!
我不認爲有,使用SET MARKUP HTML ON。您將不得不編寫自己的標記,如:
select '<tr style="color:'
|| CASE mod(rownum,2) WHEN 0 THEN 'red' ELSE 'green' END
|| '"><td>' || ename || '</td></tr>' data
from
(select ename from emp order by ename);
然後使用PROMPT或其他來添加周圍的表標記。
CSS 3(由專家Web開發人員Leon Zinger提供)有很好的解決方案。 之前設置標記HTML,頭部標記中,打印:
prompt <style>tr:nth-child(2n) { background-color: #CCE6FF ;} tr:nth-child(2n+1) { background-color: LightGray;}</style>
(明顯的顏色可以定製,以滿足您的需求)
這裏的另一個語法做交替:
.row:nth-child(even) {
background: #dde;
}
.row:nth-child(odd) {
background: white;
}
:: File: sqlplus-runner-html
@ECHO off
:: go the run dir
cd %~dp0
:: this is the dir containing the batch file
set MyDir=%CD%
for %%A in (%0) do set MyDriveLetter=%%~dA
for %%A in (%0) do set MyPath=%%~pA
for %%A in (%0) do set MyName=%%~nA
for %%A in (%0) do set MyExtension=%%~xA
:: ECHO MYNAME IS %0
:: ECHO MyDriveLetter is %MyDriveLetter%
:: ECHO MyPath is %MyPath%
:: ECHO MyName is %MyName%
:: ECHO MyExtension is %MyExtension%
:: the ora script is the same as the file name + the sql extension
set OraSqlScript=%MyDir%\%MyName%.sql
:: define the oracle user name to use to connect to ora
set OracleUserName=MyOracleUserName
:: get user input
:: SET /P Pass=[Please, provide the password for the %OracleUserName%:]
:: the pass to use to connect to the service
SET Pass=MySecretPass
:: define the name of the service
set TnsServiceName=ORASERVICENAME
:: define the log file
set LogFile=%MyDriveLetter%\%MyPath%\%MyName%.log
:: define the error log file
set ErrorLogFile=%MyDriveLetter%\%MyPath%\%MyName%.error.log
:: clear the result of the previous runs
del /q %MyDir%\*.lst
del /q %MyDir%\*.log
:: Action !!!
:: call with the listener service name
:: sqlplus %OracleUserName%/%Pass%@%TnsServiceName @%OraSqlScript% %MyName% > %LogFile% 2>%ErrorLogFile%
:: call without the listener service name
sqlplus %OracleUserName%/%Pass% @%OraSqlScript% %MyName% > %LogFile% 2>%ErrorLogFile%
:: Purpose:
:: create a generic wrapper for executing oracle sql commands trough the sqplplus
:: client
:: Requirements:
:: Windows XP or newer
:: sqlplus client on local windows
:: access to oracle database
:: %MyName%.sql with the proper sqlplus syntax to execute the sql statememtns
:: Usage:
:: call from dos or double-click in Explorer
:: VersionHistory
:: 1.1.0 --- ysg --- Removed listener name
:: 1.0.0 --- ysg --- Initial version
/* File: sqlplus-runner-csv.sql v1.0.0 docs at the end */
/* do not print echo commands */
set echo off
/* do not require feedback from the user */
set feedback off
/* set a nice prompt */
set sqlprompt ''
/* -- separate columns with a comma */
set colsep ';'
/* -- only one header row */
set pagesize 0
/*-- remove trailing blanks */
set trimspool on
/* REMOVE THE WHITE SPACE */
set trimout on
/* -- this may or may not be useful...depends on your headings. */
set headsep ON
/* how- long the line should be */
set linesize 3000
/* print the headers as well */
set heading on
/* request full html for output */
/* set markup html on spool off */
/* define the file where the output of the results should be stored */
spool "&1..html"
-- START SQL
select '<html> <head> <title>tables</title> <style type="text/css"> table tbody tr td { background-color: #eee; } table tr.odd td { background-color: #fff; } </style> </head><body><table>
' from dual ;
-- specify grey (#CCC) and white colors
-- open the row
select '<tr class="'
|| CASE mod(rownum,2) WHEN 0 THEN 'odd' ELSE 'even' END
|| '">'
-- print a single table cell
|| ' <td>' || OWNER || '</td>'
-- print another single table cell
|| ' <td>' || TABLE_NAME || '</td>'
-- close the row
|| '</tr>' FROM
-- IF YOU NEED ORDER BY CLAUSE AS WELL,
(
SELECT OWNER , TABLE_NAME FROM ALL_TABLES ORDER BY OWNER , TABLE_NAME
)
;
select '</table></body></html>' from dual ;
-- STOP SQL
spool off ;
/* exit the sqlplus tool */
EXIT 0;
/*
Purpose:
- to provide a single sql statement to run agains an oracle database
- to output a single file passed as the first argument to the script
VersionHistory:
1.1.0 --- 2012.04.08 - 23:04:19 --- ysg --- Added order by clause
1.0.0 --- 2012.04.08 - 22:07:19 --- ysg --- Initial creation
*/
謝謝你的讚美:) – Leon