SqlPlus (Oracle) 假脱机格式问题
SqlPlus (Oracle) Spool Formatting Issue
我已经安排了一个 shell 脚本,它正在输出以下电子邮件。我想删除使用下面的 dual
table 打印的 unwanted/additional 重复文本,以便为我的 SQL select 输出提供标题。
我该怎么做?
以下是假脱机 SQL 脚本。脚本执行完成后 (/home/oracle/MFS_ALERT/PGW_ALERTS_FRAUDS/PGW_ALERTS.out
),文件被添加到电子邮件 body 并发送给收件人。
您能否在下面指导缺少哪个设置参数命令或者哪个是多余的或不需要的?
这是shell脚本文件代码。
sqlplus user/pass@pgwdb @/home/oracle/MFS_ALERT/PGW_ALERTS_FRAUDS/PGW_ALERTS.sql
sleep 5
/bin/mail -s "MFS PGW Fraud Alerts (Day)" -r “test-email-1@email-domain.com” "test-email-2@email-domain.com" < /home/oracle/MFS_ALERT/PGW_ALERTS_FRAUDS/PGW_ALERTS.out
PGW_ALERTS.sql代码
set echo off;
set feedback off ;
set verify off ;
set serveroutput off;
set heading on;
set trimspool on;
set headsep off;
set PAGESIZE 60;
set LINESIZE 400;
SET WRAP OFF;
SET COLSEP ' ';
set numw 20;
SPOOL /home/oracle/MFS_ALERT/PGW_ALERTS_FRAUDS/PGW_ALERTS.out append;
select '====== Transactions with count > 2 from same MSISDN ======' from dual;
SELECT '"'
|| MOBILENUMBER
|| '"' MSISDN,
AMOUNT/100 AMOUNT,
DECODE(TXNTYPEID,'6','MW', '0') TXN_TYPE,
MERCHANTCODE,
COUNT (*) COUNT
FROM TBL_TXN_LOG
WHERE TXNTYPEID ='6'
AND AMOUNT <=10000
AND TXNDATETIME>= SYSDATE -1
AND STATUS ='xxxx'
GROUP BY '"'
|| MOBILENUMBER
|| '"', AMOUNT/100, DECODE(TXNTYPEID,'6','MW', '0'), MERCHANTCODE
HAVING COUNT (*) > 2
UNION ALL
SELECT '"'
|| MOBILENUMBER
|| '"' MSISDN ,
AMOUNT/100 AMOUNT,
DECODE(TXNTYPEID,'164', 'Card', '0') TXN_TYPE,
MERCHANTCODE,
COUNT (*) COUNT
FROM TBL_TXN_LOG
WHERE TXNTYPEID ='164'
AND AMOUNT >=2500000
AND TXNDATETIME>= SYSDATE - 1
AND STATUS ='xxxx'
GROUP BY MOBILENUMBER,
AMOUNT,
DECODE(TXNTYPEID,'164','Card', '0') ,
MERCHANTCODE
HAVING COUNT (*) > 1
;
SPOOL OFF;
SET DEFINE ON
SET SERVEROUTPUT OFF
quit
收件人收到的邮件。,
-----Original Message----- From: destination.email@emaildomain.com Sent: Friday, December 8, 2017 7:36 PM To:
destination.email@emaildomain.com Subject: MFS PGW Fraud Alerts (4
Hourly)
***> '======TRANSACTIONSWITHAMOUNT<100FORMW&>25000======'
--------------------------------------------------------------***
====== 交易金额 < 100 for MW & > 25000 ======
MSISDN 金额 TXN_ MERCHANTCODE
数数
-------------------------------------------------- ---------------------------------------------- "924008482888" 70兆瓦 00342386 1
“924008345433”20 兆瓦 002218387
1
我想删除这些多余的行
'======TRANSACTIONSWITHAMOUNT<100FORMW&>25000======'
稍微更改一下您的查询,为您的标题使用别名,然后将 off/on 标题改为如下所示:
set heading off
select '====== Transactions with count > 2 from same MSISDN ======' as info from dual;
select '<pre>' from dual;
set heading on
-- rest of your query
set heading off
select '</pre>' from dual;
如果邮件以 HTML 格式发送,那应该可以解决问题。
我已经安排了一个 shell 脚本,它正在输出以下电子邮件。我想删除使用下面的 dual
table 打印的 unwanted/additional 重复文本,以便为我的 SQL select 输出提供标题。
我该怎么做?
以下是假脱机 SQL 脚本。脚本执行完成后 (/home/oracle/MFS_ALERT/PGW_ALERTS_FRAUDS/PGW_ALERTS.out
),文件被添加到电子邮件 body 并发送给收件人。
您能否在下面指导缺少哪个设置参数命令或者哪个是多余的或不需要的?
这是shell脚本文件代码。
sqlplus user/pass@pgwdb @/home/oracle/MFS_ALERT/PGW_ALERTS_FRAUDS/PGW_ALERTS.sql
sleep 5
/bin/mail -s "MFS PGW Fraud Alerts (Day)" -r “test-email-1@email-domain.com” "test-email-2@email-domain.com" < /home/oracle/MFS_ALERT/PGW_ALERTS_FRAUDS/PGW_ALERTS.out
PGW_ALERTS.sql代码
set echo off;
set feedback off ;
set verify off ;
set serveroutput off;
set heading on;
set trimspool on;
set headsep off;
set PAGESIZE 60;
set LINESIZE 400;
SET WRAP OFF;
SET COLSEP ' ';
set numw 20;
SPOOL /home/oracle/MFS_ALERT/PGW_ALERTS_FRAUDS/PGW_ALERTS.out append;
select '====== Transactions with count > 2 from same MSISDN ======' from dual;
SELECT '"'
|| MOBILENUMBER
|| '"' MSISDN,
AMOUNT/100 AMOUNT,
DECODE(TXNTYPEID,'6','MW', '0') TXN_TYPE,
MERCHANTCODE,
COUNT (*) COUNT
FROM TBL_TXN_LOG
WHERE TXNTYPEID ='6'
AND AMOUNT <=10000
AND TXNDATETIME>= SYSDATE -1
AND STATUS ='xxxx'
GROUP BY '"'
|| MOBILENUMBER
|| '"', AMOUNT/100, DECODE(TXNTYPEID,'6','MW', '0'), MERCHANTCODE
HAVING COUNT (*) > 2
UNION ALL
SELECT '"'
|| MOBILENUMBER
|| '"' MSISDN ,
AMOUNT/100 AMOUNT,
DECODE(TXNTYPEID,'164', 'Card', '0') TXN_TYPE,
MERCHANTCODE,
COUNT (*) COUNT
FROM TBL_TXN_LOG
WHERE TXNTYPEID ='164'
AND AMOUNT >=2500000
AND TXNDATETIME>= SYSDATE - 1
AND STATUS ='xxxx'
GROUP BY MOBILENUMBER,
AMOUNT,
DECODE(TXNTYPEID,'164','Card', '0') ,
MERCHANTCODE
HAVING COUNT (*) > 1
;
SPOOL OFF;
SET DEFINE ON
SET SERVEROUTPUT OFF
quit
收件人收到的邮件。,
-----Original Message----- From: destination.email@emaildomain.com Sent: Friday, December 8, 2017 7:36 PM To: destination.email@emaildomain.com Subject: MFS PGW Fraud Alerts (4 Hourly)
***> '======TRANSACTIONSWITHAMOUNT<100FORMW&>25000======'
--------------------------------------------------------------***
====== 交易金额 < 100 for MW & > 25000 ======
MSISDN 金额 TXN_ MERCHANTCODE 数数 -------------------------------------------------- ---------------------------------------------- "924008482888" 70兆瓦 00342386 1 “924008345433”20 兆瓦 002218387
1
我想删除这些多余的行
'======TRANSACTIONSWITHAMOUNT<100FORMW&>25000======'
稍微更改一下您的查询,为您的标题使用别名,然后将 off/on 标题改为如下所示:
set heading off
select '====== Transactions with count > 2 from same MSISDN ======' as info from dual;
select '<pre>' from dual;
set heading on
-- rest of your query
set heading off
select '</pre>' from dual;
如果邮件以 HTML 格式发送,那应该可以解决问题。