sql oracle sqlplus示例生成报告

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql oracle sqlplus示例生成报告相关的知识,希望对你有一定的参考价值。

SET echo OFF
SET feedback OFF
SET verify OFF
SET heading OFF
SET termout OFF
SET linesize 32767
SET trimspool ON
SET trimout ON
SET serveroutput ON

COL filename new_value filename;
SELECT './reports/'||TRANSLATE(C_NAME,' */''','___')
  ||'_'
  ||
  &1
  ||'_bill_report.csv' filename
FROM GMCCMG_CAMPAIGNS
WHERE N_CAMPAIGN_ID=
  &1;
spool &filename;
DECLARE
TYPE Varchar2Tab
IS
  TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
TYPE Varchar2List
IS
  TABLE OF VARCHAR2(30);
  billStatuses Varchar2List  :=Varchar2List('NOT_APPLICABLE', 'REQUESTED', 'CONFIRMED', 'REFUSED', 'ERROR');
  billTypes Varchar2List     :=Varchar2List('SMS', 'CUSTOM', 'NONE');
  campaignTypes Varchar2List :=Varchar2List('PULL', 'PUSH', 'QRCODE', 'UNKNOWN');
  offerTypes Varchar2List :=Varchar2List('COUPON', 'DEAL', 'APP');
  CURSOR billCur
  IS
    SELECT consumer.C_MSISDN,
      billing.N_CAMPAIGN_ID,
      campaign.C_CAMPAIGN_REF,
      campaign.C_NAME C_CAMP_NAME,
      campaign.N_TYPE N_CAMP_TYPE,
      issuer.C_TIMEZONE,
      billing.N_OFFER_ID,
      offer.C_OFFER_REF,
      offer.C_NAME C_OFFER_NAME,
      offer.N_OFFER_TYPE,
      billing.N_BILLING_TYPE,
      billing.N_APPLIED_PRICE,
      billing.N_STATUS,
      billing.N_ERROR_CODE,
      TO_CHAR(CAST((FROM_TZ(CAST(billing.D_BILLING_DATE AS TIMESTAMP),'+00:00') AT TIME ZONE issuer.c_timezone) AS DATE), 'YYYY-MM-DD HH24:MI:SS') D_BILLING_DATE,
      billing.C_REASON
    FROM GMCCRP_CONSUMER_BILLINGS billing
    INNER JOIN gmccop_consumers consumer
    ON consumer.N_CONSUMER_ID = billing.N_CONSUMER_ID
    INNER JOIN GMCCOM_CAMPAIGNS campaign
    ON campaign.N_CAMPAIGN_ID = billing.N_CAMPAIGN_ID
    INNER JOIN GMCCOM_OFFERS offer
    ON offer.N_OFFER_ID = billing.N_OFFER_ID
    INNER JOIN GMCCMG_OFFER_ISSUERS issuer
    ON issuer.N_OFFER_ISSUER_ID = offer.N_OFFER_ISSUER_ID
    WHERE billing.N_CAMPAIGN_ID =&1;
BEGIN
  DBMS_OUTPUT.ENABLE (buffer_size => NULL);
  --output headers
  dbms_output.put_line('"MSISDN","Campaign ID","Campaign Reference","Campaign Name","Campaign Type","Campaign TimeZone","Offer ID","Offer Reference","Offer Name","Offer Type","Billing Type","Applied Price","Billing Status","Billing Status Code","Billing Date","Billing Reason"');
  --loop to generate the report content
  FOR line IN billCur
  LOOP
    dbms_output.put_line('"'||line.C_MSISDN||'",'||line.N_CAMPAIGN_ID||',"'||line.C_CAMPAIGN_REF||'","'
      ||line.C_CAMP_NAME||'",'||campaignTypes(line.N_CAMP_TYPE+1)||',"'||line.C_TIMEZONE||'",'||line.N_OFFER_ID||',"'
      ||line.C_OFFER_REF||'","'||line.C_OFFER_NAME||'",'||offerTypes(line.N_OFFER_TYPE+1)||','||billTypes(line.N_BILLING_TYPE+1)||','
      ||line.N_APPLIED_PRICE||','||billStatuses(line.N_STATUS+1)||','||line.N_ERROR_CODE||','||line.D_BILLING_DATE||',"'||line.C_REASON||'"');
  END LOOP;
END;
/
spool OFF

以上是关于sql oracle sqlplus示例生成报告的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 使用 PL/SQL Developer 生成 AWR 报告

Oracle 使用 PL/SQL Developer 生成 AWR 报告

如何生成Oracle AWR报告

oracle生成AWR报告

生成Oracle的AWR报告

awr报告生成