SELECT TO_CHAR(SUBSCRIBER_NO) SUBSCRIBER_ID, SUB_STATUS, SUB_STS_RSN_CD, TO_CHAR(SUB_STATUS_DATE, ‘yyyyMMdd’) SUB_STATUS_DATE, SUBSCRIBER_TYPE FROM SUBSCRIBER_FA_V WHERE BAN = :1 AND ROWNUM <= :2 AND SUB_STATUS NOT IN (‘C’, ‘L’, ‘T’) ORDER BY INIT_ACT_DATE, SUBSCRIBER_NO
如果想做sql检查,对于sql中传入的变量,sql monitor提供了很方便的功能。 Binds
Name
Position
Type
Value
:B2
1
NUMBER
10308170
:B1
2
NUMBER
6
很清晰看到正在执行的sql语句对应的变量值。
还是来看看执行计划。
SQL Plan Monitoring Details (Plan Hash Value=1125972187)
视图的内容如下: SELECT xxxxxxx 1 RANK FROM subscriber, distribute ed, channel cpc WHERE cpc.pym_channel_no = ed.target_pcn AND ed.agreement_no = subscriber.subscriber_no AND eg_dist_type = ‘D’ AND ed.expiration_date IS NULL AND SUBSCRIBER.SUB_STATUS NOT IN (‘C’, ‘L’, ‘T’) UNION SELECT xxxxxxx FROM (SELECT cpc.ban, subscriber.prim_resource_val, subscriber.init_act_date, SUBSCRIBER.CUSTOMER_ID, subscriber.subscriber_no, SUBSCRIBER.SUBSCRIBER_TYPE, SUBSCRIBER.SUB_STATUS, SUBSCRIBER.SUB_STS_RSN_CD, SUBSCRIBER.SUB_STATUS_DATE, SUBSCRIBER.EFFECTIVE_DATE, ROW_NUMBER () OVER ( PARTITION BY subscriber.subscriber_no ORDER BY ed.expiration_date, subscriber.subscriber_no DESC) AS RANK FROM subscriber, distribute ed, channel cpc WHERE cpc.pym_channel_no = ed.target_pcn AND ed.agreement_no = subscriber.subscriber_no AND eg_dist_type = ‘D’ AND SUBSCRIBER.SUB_STATUS IN (‘C’, ‘L’, ‘T’)) WHERE RANK = 1
select xxxxxxx from (SELECT xxxxxxx 1 RANK FROM subscriber, event_distribute ed, csm_pay_channel cpc WHERE cpc.pym_channel_no = ed.target_pcn AND ed.agreement_no = subscriber.subscriber_no AND eg_dist_type = ‘D’ AND ed.expiration_date IS NULL AND SUBSCRIBER.SUB_STATUS NOT IN (‘C’, ‘L’, ‘T’) and cpc.ban = 10308170 UNION SELECT “SUBSCRIBER_NO”, “INIT_ACT_DATE”, “SUB_STATUS”, “SUB_STS_RSN_CD”, “SUB_STATUS_DATE”, “SUBSCRIBER_TYPE”, “RANK” FROM (SELECT subscriber.subscriber_no, SUBSCRIBER.INIT_ACT_DATE, SUBSCRIBER.SUBSCRIBER_TYPE, SUBSCRIBER.SUB_STATUS, SUBSCRIBER.SUB_STS_RSN_CD, SUBSCRIBER.SUB_STATUS_DATE, ROW_NUMBER() OVER(PARTITION BY subscriber.subscriber_no ORDER BY ed.expiration_date, subscriber.subscriber_no DESC) AS RANK FROM subscriber, event_distribute ed, csm_pay_channel cpc WHERE cpc.pym_channel_no = ed.target_pcn AND ed.agreement_no = subscriber.subscriber_no AND eg_dist_type = ‘D’ AND SUBSCRIBER.SUB_STATUS IN (‘C’, ‘L’, ‘T’) and cpc.ban = 10308170) WHERE RANK = 1) where SUB_STATUS NOT IN (‘C’,’L’,’T’) and rownum < 6 ORDER BY INIT_ACT_DATE, SUBSCRIBER_ID