Advertisement
Guest User

Untitled

a guest
Sep 3rd, 2015
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 69.16 KB | None | 0 0
  1. CREATE OR REPLACE FUNCTION TVIC.xml_slow_fnc (
  2.    INN_VRM      IN CHAR,
  3.    IN_MILEAGE   IN NUMBER DEFAULT NULL)
  4.    RETURN XMLTYPE
  5. AS                                                                                                                               /*
  6. */
  7.    strreturn              XMLTYPE;
  8.    in_vrm                 vehicle.vehicle_vrm%TYPE;
  9.    l_vehicle_vin          vehicle.vehicle_vin%TYPE;
  10.    l_vehicle_abicode      vehicle.vehicle_abicode%TYPE;
  11.    l_abi_string           XMLTYPE;
  12.    l_keeper_vrm           keeper_simple.keeper_vrm%TYPE;
  13.    l_vehicle_count        NUMBER;
  14.    l_uk                   NUMBER;
  15.    l_uk_date              DATE;
  16.    l_ni                   NUMBER;
  17.    l_ni_date              DATE;
  18.    l_vehicle_mvris_code   vehicle_simple.mvris_code%TYPE DEFAULT NULL;
  19.    abi_table              abi_model_type;
  20.    l_reg_date             DATE;
  21.    l_manuf_date           DATE;
  22.    l_body_class           VARCHAR2 (30);
  23.    v_mileage              NUMBER;
  24.    v_plate                VARCHAR2 (2);
  25.    v_adjustment_factor    NUMBER;
  26.    v_standard_mileage     NUMBER;
  27.    v_exception_msg        VARCHAR2 (1000);
  28.    l_mc_val_rec           tvic.motorcycles_valuations%ROWTYPE;
  29.    l_mvris_code           tvic.vehicle_simple.mvris_code%TYPE;
  30.    l_lance                VARCHAR2 (1000);
  31. BEGIN
  32.    in_vrm := REPLACE (inn_vrm, ' ');
  33.    v_mileage := in_mileage;
  34.  
  35.    SELECT COUNT (*)
  36.      INTO l_uk
  37.      FROM tvic.uk_generic_full_vw
  38.     WHERE vehicle_vrm = in_vrm;
  39.  
  40.    IF l_uk > 0
  41.    THEN
  42.         SELECT MAX (keeper_v5c_date)
  43.           INTO l_uk_date
  44.           FROM tvic.uk_generic_full_vw
  45.          WHERE vehicle_vrm = in_vrm
  46.       GROUP BY vehicle_vin, keeper_vrm;
  47.    ELSE
  48.       l_uk_date := NULL;
  49.    END IF;
  50.  
  51.    SELECT COUNT (*)
  52.      INTO l_ni
  53.      FROM tvic.ni_vehicle_simple
  54.     WHERE vehicle_vrm = in_vrm;
  55.  
  56.    IF l_ni > 0
  57.    THEN
  58.       SELECT keeper_start_date
  59.         INTO l_ni_date
  60.         FROM tvic.ni_vehicle_simple
  61.        WHERE vehicle_vrm = in_vrm;
  62.    ELSE
  63.       l_ni_date := NULL;
  64.    END IF;
  65.  
  66.    IF    l_ni_date > l_uk_date
  67.       OR (l_uk = 0 AND l_ni > 0)
  68.       OR (l_uk_date IS NULL AND l_ni_date IS NOT NULL)
  69.    THEN
  70.       DBMS_OUTPUT.put_line ('ni: ' || in_vrm);
  71.  
  72.       SELECT VEHICLE_VIN,
  73.              VEHICLE_ABICODE,
  74.              FIRST_REG_DATE_NI,
  75.              MVRIS_CODE,
  76.              CASE
  77.                 WHEN VEHICLE_MANUF_DATE IS NULL
  78.                 THEN
  79.                    CASE
  80.                       WHEN FIRST_REG_DATE_NI < FIRST_REG_DATE_GB
  81.                       THEN
  82.                          FIRST_REG_DATE_NI
  83.                       WHEN FIRST_REG_DATE_NI IS NULL
  84.                       THEN
  85.                          FIRST_REG_DATE_GB
  86.                       WHEN FIRST_REG_DATE_GB IS NULL
  87.                       THEN
  88.                          FIRST_REG_DATE_NI
  89.                       ELSE
  90.                          FIRST_REG_DATE_GB
  91.                    END
  92.                 ELSE
  93.                    TO_DATE ( (TO_CHAR (VEHICLE_MANUF_DATE) || '-12-31'),
  94.                             'YYYY-MM-DD')
  95.              END
  96.                 VEHICLE_MANUF_DATE,
  97.              CBC_CDL_BODY_CLASS
  98.         INTO L_VEHICLE_VIN,
  99.              L_VEHICLE_ABICODE,
  100.              L_REG_DATE,
  101.              L_MVRIS_CODE,
  102.              L_MANUF_DATE,
  103.              L_BODY_CLASS
  104.         FROM TVIC.NI_VEHICLE_SIMPLE, TVIC.CDL_BODY_CLASS
  105.        WHERE VEHICLE_VRM = IN_VRM AND CBC_BODY_CODE(+) = VEHICLE_BODY;
  106.  
  107.       IF L_BODY_CLASS = 'MOTORCYCLE'
  108.       THEN
  109.          SELECT MV.*
  110.            INTO L_MC_VAL_REC
  111.            FROM TVIC.NI_VEHICLE_SIMPLE V, TVIC.MOTORCYCLES_VALUATIONS MV
  112.           WHERE     V.VEHICLE_WHEELPLAN = MV.WHEELPLAN_CODE(+)
  113.                 AND V.VEHICLE_MAKE_CODE = MV.MAKE_CODE(+)
  114.                 AND V.VEHICLE_MODEL_CODE = MV.MODEL_CODE(+)
  115.                 AND VEHICLE_VRM = IN_VRM;
  116.       END IF;
  117.  
  118.       SELECT PLATE
  119.         INTO V_PLATE
  120.         FROM TVIC.DOM
  121.        WHERE VEHICLE_MANUF_DATE = L_REG_DATE;
  122.  
  123.       DBMS_OUTPUT.put_line ('body: ' || L_BODY_CLASS);
  124.  
  125.       IF L_BODY_CLASS = 'MOTORCYCLE'
  126.       THEN
  127.          VALN_MC_MILEAGE_ADJUST_V2_PRC (V_MILEAGE,
  128.                                         TO_CHAR (L_REG_DATE, 'YYYY'),
  129.                                         V_PLATE,
  130.                                         V_ADJUSTMENT_FACTOR,
  131.                                         V_STANDARD_MILEAGE,
  132.                                         V_EXCEPTION_MSG);
  133.       ELSE
  134.       DBMS_OUTPUT.put_line ('body12342354234: ' || L_BODY_CLASS);
  135.          VALN_MILEAGE_ADJUST_V2_PRC (V_MILEAGE,
  136.                                      TO_CHAR (L_REG_DATE, 'YYYY'),
  137.                                      V_PLATE,
  138.                                      V_ADJUSTMENT_FACTOR,
  139.                                      V_STANDARD_MILEAGE,
  140.                                      V_EXCEPTION_MSG);
  141.       END IF;
  142.  
  143.       IF l_vehicle_abicode IS NULL
  144.       THEN
  145.          SELECT tvic.xml_iris_abi_model_fnc (in_vrm) INTO abi_table FROM DUAL;
  146.  
  147.          SELECT XMLAGG (
  148.                    XMLELEMENT (
  149.                       "ABI_CODE",
  150.                       CASE
  151.                          WHEN iris_count > 1
  152.                          THEN
  153.                             XMLFOREST (iris_abi "CODE", iris_model "MODEL")
  154.                          ELSE
  155.                             XMLFOREST (iris_abi "CODE")
  156.                       END))
  157.            INTO l_abi_string
  158.            FROM TABLE (abi_table);
  159.  
  160.       ELSE
  161.          SELECT abi_object_type (l_vehicle_abicode, NULL, NULL)
  162.            BULK COLLECT INTO abi_table
  163.            FROM DUAL;
  164.  
  165.          SELECT XMLELEMENT (
  166.                    "ABI_CODE",
  167.                    XMLFOREST (LPAD (l_vehicle_abicode, 8, '0') "CODE"))
  168.            INTO l_abi_string
  169.            FROM DUAL;
  170.       END IF;
  171.  
  172.       SELECT XMLCONCAT (
  173.                 XMLELEMENT (
  174.                    "DATASET",
  175.                    (SELECT XMLCONCAT (
  176.                               XMLELEMENT (
  177.                                  "DVLA",
  178.                                  XMLELEMENT (
  179.                                     "VEHICLE",
  180.                                     XMLFOREST (make_desc "MAKE",
  181.                                                model_desc "MODEL",
  182.                                                vehicle_desc "VEHICLE_DESC",
  183.                                                colour_desc "COLOUR")),
  184.                                  CASE
  185.                                     WHEN l_body_class = 'MOTORCYCLE'
  186.                                     THEN
  187.                                        XMLELEMENT (
  188.                                           "MOTORCYCLES_VALUATION",
  189.                                           XMLFOREST (
  190.                                              l_mc_val_rec.make_desc "MAKE_DESC",
  191.                                              l_mc_val_rec.model_desc "MODEL_DESC",
  192.                                              l_mc_val_rec.count_vrm "COUNT_VRM",
  193.                                              l_mc_val_rec.make_model_code "MAKE_MODEL_CODE",
  194.                                              l_mc_val_rec.vip_code "VIP_CODE"))
  195.                                  END),
  196.                               CASE
  197.                                  WHEN l_body_class = 'MOTORCYCLE'
  198.                                  THEN
  199.                                     (SELECT XMLAGG (
  200.                                                XMLELEMENT (
  201.                                                   "VALUATION",
  202.                                                   XMLFOREST (
  203.                                                      pat.make_desc "VIP_MAKE_DESC",
  204.                                                      pat.model_desc "VIP_MODEL_DESC",
  205.                                                      pat.vehicle_desc "VIP_VEHICLE_DESC",
  206.                                                      pat.fuel "VIP_FUEL",
  207.                                                      pat.mt "VIP_MT",
  208.                                                      year_manufactured "VIP_YEAR_MANUFACTURED",
  209.                                                      vip.plate "VIP_PLATE",
  210.                                                      pat.new_sale "VIP_NEW_SALE",
  211.                                                      v_mileage "ACTUAL_MILEAGE",
  212.                                                      XMLFOREST (
  213.                                                           ROUND (
  214.                                                                (  pat.pat_sale
  215.                                                                 * (  1
  216.                                                                    + (  pc.rtr
  217.                                                                       / 100)))
  218.                                                              * v_adjustment_factor
  219.                                                              / 25)
  220.                                                         * 25 "VIP_RTR",
  221.                                                           ROUND (
  222.                                                                (  pat.pat_sale
  223.                                                                 * (  1
  224.                                                                    + (  pc.trade
  225.                                                                       / 100)))
  226.                                                              * v_adjustment_factor
  227.                                                              / 25)
  228.                                                         * 25 "VIP_TRADE",
  229.                                                           ROUND (
  230.                                                                (  pat.pat_sale
  231.                                                                 * (  1
  232.                                                                    + (  pc.av
  233.                                                                       / 100)))
  234.                                                              * v_adjustment_factor
  235.                                                              / 25)
  236.                                                         * 25 "VIP_AVERAGE",
  237.                                                           ROUND (
  238.                                                                (  pat.pat_sale
  239.                                                                 * (  1
  240.                                                                    + (  pc.retail
  241.                                                                       / 100)))
  242.                                                              * v_adjustment_factor
  243.                                                              / 25)
  244.                                                         * 25 "VIP_RETAIL") "ADJUSTED")))
  245.                                        FROM tvic.vip_bike_codes vip,
  246.                                             tvic.dom dom,
  247.                                             tvic.vip_bike_pat pat,
  248.                                             tvic.vip_pat_codes_bike pc
  249.                                       WHERE     vip.vipcode =
  250.                                                    l_mc_val_rec.vip_code
  251.                                             AND pat.vipcode = vip.vipcode
  252.                                             AND pat.yearcode =
  253.                                                       TO_CHAR (l_reg_date,
  254.                                                                'YY')
  255.                                                    || dom.plate
  256.                                             AND pc.yearcode = pat.yearcode
  257.                                             AND pc.pat_code = pat.pat_code
  258.                                             AND RTRIM (vip.plate) = dom.plate
  259.                                             AND l_reg_date =
  260.                                                    dom.vehicle_manuf_date
  261.                                             AND TO_CHAR (
  262.                                                    vip.year_manufactured) =
  263.                                                    TO_CHAR (l_manuf_date,
  264.                                                             'YYYY'))
  265.                                  ELSE
  266.                                     (SELECT /*+ use_nl(vip) */
  267.                                             XMLAGG (
  268.                                                XMLELEMENT (
  269.                                                   "VALUATION",
  270.                                                   XMLFOREST (
  271.                                                      pat.make_desc "VIP_MAKE_DESC",
  272.                                                      pat.model_desc "VIP_MODEL_DESC",
  273.                                                      pat.vehicle_desc "VIP_VEHICLE_DESC",
  274.                                                      pat.fuel "VIP_FUEL",
  275.                                                      pat.mt "VIP_MT",
  276.                                                      year_manufactured "VIP_YEAR_MANUFACTURED",
  277.                                                      vip.plate "VIP_PLATE",
  278.                                                      pat.new_sale "VIP_NEW_SALE",
  279.                                                      v_mileage "ACTUAL_MILEAGE",
  280.                                                      (SELECT XMLAGG (
  281.                                                                 XMLELEMENT (
  282.                                                                    EVALNAME pat_type,
  283.                                                                      ROUND (
  284.                                                                           (  pat.pat_sale
  285.                                                                            * (  1
  286.                                                                               + (  pat_value
  287.                                                                                  / 100)))
  288.                                                                         * v_adjustment_factor
  289.                                                                         / 25)
  290.                                                                    * 25))
  291.                                                         FROM (  SELECT *
  292.                                                                   FROM (SELECT /*+ use_nl(vip) */
  293.                                                                                DECODE (
  294.                                                                                   pat_type,
  295.                                                                                   'CDL CAR FORECOURT', 'CAR_FORECOURT',
  296.                                                                                   'CDL PRIVATE CLEAN', 'PRIVATE_CLEAN',
  297.                                                                                   'CDL TRADE IN CLEAN', 'TRADE_IN_CLEAN',
  298.                                                                                   'CDL AUCTION', 'AUCTION',
  299.                                                                                   'VIPDATA RTR', 'VIP_RTR',
  300.                                                                                   'VIPDATA TRADE', 'VIP_TRADE',
  301.                                                                                   'VIPDATA AVERAGE', 'VIP_AVERAGE',
  302.                                                                                   'VIPDATA RETAIL', 'VIP_RETAIL')
  303.                                                                                   pat_type,
  304.                                                                                pat.vipcode
  305.                                                                                   pat_vipcode,
  306.                                                                                pat.vip_type
  307.                                                                                   pat_viptype,
  308.                                                                                pat_value
  309.                                                                           FROM tvic.mvris_to_vip_vw m2v,
  310.                                                                                tvic.vip_codes_vw vip,
  311.                                                                                tvic.dom dom,
  312.                                                                                tvic.vip_pat_vw pat,
  313.                                                                                tvic.vip_pat_codes pc
  314.                                                                          WHERE     m2v.mvris_code(+) =
  315.                                                                                       l_mvris_code
  316.                                                                                AND vip.vipcode(+) =
  317.                                                                                       m2v.vip_code
  318.                                                                                AND vip.vip_type =
  319.                                                                                       m2v.vip_type
  320.                                                                                AND pat.vip_type =
  321.                                                                                       m2v.vip_type
  322.                                                                                AND pat.vipcode =
  323.                                                                                       vip.vipcode
  324.                                                                                AND pat.yearcode =
  325.                                                                                          TO_CHAR (
  326.                                                                                             l_reg_date,
  327.                                                                                             'YY')
  328.                                                                                       || dom.plate
  329.                                                                                AND RTRIM (
  330.                                                                                       vip.plate) =
  331.                                                                                       dom.plate
  332.                                                                                AND l_reg_date =
  333.                                                                                       dom.vehicle_manuf_date
  334.                                                                                AND TO_CHAR (
  335.                                                                                       vip.year_manufactured) =
  336.                                                                                       TO_CHAR (
  337.                                                                                          l_manuf_date,
  338.                                                                                          'YYYY')
  339.                                                                                AND pc.yearcode =
  340.                                                                                       pat.yearcode
  341.                                                                                AND pc.pat_code =
  342.                                                                                       pat.pat_code
  343.                                                                                AND pc.pat_type IN
  344.                                                                                       ('CDL CAR FORECOURT',
  345.                                                                                        'CDL PRIVATE CLEAN',
  346.                                                                                        'CDL TRADE IN CLEAN',
  347.                                                                                        'CDL AUCTION'))
  348.                                                                        pc2
  349.                                                               ORDER BY DECODE (
  350.                                                                           pc2.pat_type,
  351.                                                                           'VIP_RTR', 1,
  352.                                                                           'VIP_TRADE', 2,
  353.                                                                           'VIP_AVERAGE', 3,
  354.                                                                           'VIP_RETAIL', 4,
  355.                                                                           'CAR_FORECOURT', 5,
  356.                                                                           'PRIVATE_CLEAN', 6,
  357.                                                                           'TRADE_IN_CLEAN', 7,
  358.                                                                           'AUCTION', 8))
  359.                                                        WHERE     pat_vipcode =
  360.                                                                     pat.vipcode
  361.                                                              AND pat_viptype =
  362.                                                                     pat.vip_type) "ADJUSTED")))
  363.                                        FROM tvic.mvris_to_vip_vw m2v,
  364.                                             tvic.vip_codes_vw vip,
  365.                                             tvic.dom dom,
  366.                                             tvic.vip_pat_vw pat
  367.                                       WHERE     m2v.mvris_code(+) =
  368.                                                    l_mvris_code
  369.                                             AND vip.vipcode(+) = m2v.vip_code
  370.                                             AND vip.vip_type = m2v.vip_type
  371.                                             AND pat.vip_type = m2v.vip_type
  372.                                             AND pat.vipcode = vip.vipcode
  373.                                             AND pat.yearcode =
  374.                                                       TO_CHAR (l_reg_date,
  375.                                                                'YY')
  376.                                                    || dom.plate
  377.                                             AND RTRIM (vip.plate) = dom.plate
  378.                                             AND l_reg_date =
  379.                                                    dom.vehicle_manuf_date
  380.                                             AND TO_CHAR (
  381.                                                    vip.year_manufactured) =
  382.                                                    TO_CHAR (l_manuf_date,
  383.                                                             'YYYY'))
  384.                               END)
  385.                       FROM ni_generic_full_vw v
  386.                      WHERE (   vehicle_vin = l_vehicle_vin
  387.                             OR vehicle_vrm = in_vrm)),
  388.                    (SELECT XMLCONCAT (
  389.                               XMLELEMENT (
  390.                                  "MVRIS",
  391.                                  XMLFOREST (
  392.                                     mv2.engine_size "ENGINE_SIZE",
  393.                                     mv2.exact_cc "CC",
  394.                                     mv2.bhp_count "BHP_COUNT",
  395.                                     mv2.model_variant_name "MODEL_VARIANT_NAME",
  396.                                     mv2.door_count "DOOR_COUNT",
  397.                                     mv2.body_desc "BODY_DESC",
  398.                                     mv2.cab_type "CAB_TYPE",
  399.                                     mv2.gearbox_type "GEARBOX_TYPE",
  400.                                     mv2.number_of_axles "NUMBER_OF_AXLES"),
  401.                                  XMLELEMENT (
  402.                                     "MAKE",
  403.                                     XMLELEMENT ("DESC", mv2.make_desc)),
  404.                                  XMLELEMENT (
  405.                                     "MODEL",
  406.                                     XMLELEMENT ("DESC", mv2.model_desc)),
  407.                                  XMLELEMENT (
  408.                                     "BODY",
  409.                                     XMLELEMENT ("DESC", mv2.body_desc)),
  410.                                  XMLELEMENT (
  411.                                     "FUEL",
  412.                                     XMLELEMENT ("DESC", mv2.fuel_desc))))
  413.                       FROM tvic.ni_vehicle_simple mv1,
  414.                            tvic.mvris_schedule2 mv2
  415.                      WHERE     mv1.mvris_code = mv2.mvris_code
  416.                            AND mv1.vehicle_vrm = in_vrm
  417.                            AND mv2.primary_fuel = 'Y')))
  418.                 data_set
  419.         INTO strreturn
  420.         FROM DUAL;
  421.    ELSE
  422.       SELECT COUNT (*)
  423.         INTO L_VEHICLE_COUNT
  424.         FROM TVIC.VEHICLE_SIMPLE
  425.        WHERE VEHICLE_VRM = IN_VRM;
  426.  
  427.       IF L_VEHICLE_COUNT > 0
  428.       THEN
  429.          SELECT VEHICLE_VIN,
  430.                 VEHICLE_ABICODE,
  431.                 VEHICLE_REG_DATE,
  432.                 MVRIS_CODE,
  433.                 VEHICLE_MANUF_DATE,
  434.                 CBC_CDL_BODY_CLASS
  435.            INTO L_VEHICLE_VIN,
  436.                 L_VEHICLE_ABICODE,
  437.                 L_REG_DATE,
  438.                 L_MVRIS_CODE,
  439.                 L_MANUF_DATE,
  440.                 L_BODY_CLASS
  441.            FROM TVIC.VEHICLE_SIMPLE, TVIC.CDL_BODY_CLASS
  442.           WHERE VEHICLE_VRM = IN_VRM AND CBC_BODY_CODE(+) = VEHICLE_BODY;
  443.  
  444.          DBMS_OUTPUT.put_line ('body: ' || L_BODY_CLASS);
  445.  
  446.          IF L_BODY_CLASS = 'MOTORCYCLE'
  447.          THEN
  448.             SELECT MV.*
  449.               INTO L_MC_VAL_REC
  450.               FROM TVIC.VEHICLE_SIMPLE V, TVIC.MOTORCYCLES_VALUATIONS MV
  451.              WHERE     V.VEHICLE_WHEELPLAN = MV.WHEELPLAN_CODE(+)
  452.                    AND SUBSTR (V.VEHICLE_MAKE_CODE, 1, 2) = MV.MAKE_CODE(+)
  453.                    AND V.VEHICLE_MODEL_CODE = MV.MODEL_CODE(+)
  454.                    AND VEHICLE_VRM = IN_VRM;
  455.          END IF;
  456. DBMS_OUTPUT.put_line ('body2: ' || L_BODY_CLASS);
  457.          SELECT PLATE
  458.            INTO V_PLATE
  459.            FROM TVIC.DOM
  460.           WHERE VEHICLE_MANUF_DATE = L_REG_DATE;
  461.  
  462.          IF L_BODY_CLASS = 'MOTORCYCLE'
  463.          THEN
  464.          DBMS_OUTPUT.put_line ('body3: ' || L_BODY_CLASS);
  465.             VALN_MC_MILEAGE_ADJUST_V2_PRC (V_MILEAGE,
  466.                                            TO_CHAR (L_REG_DATE, 'YYYY'),
  467.                                            V_PLATE,
  468.                                            V_ADJUSTMENT_FACTOR,
  469.                                            V_STANDARD_MILEAGE,
  470.                                            V_EXCEPTION_MSG);
  471.          ELSE
  472.          DBMS_OUTPUT.put_line ('body4: ' || L_BODY_CLASS);
  473.             VALN_MILEAGE_ADJUST_V2_PRC (V_MILEAGE,
  474.                                         TO_CHAR (L_REG_DATE, 'YYYY'),
  475.                                         V_PLATE,
  476.                                         V_ADJUSTMENT_FACTOR,
  477.                                         V_STANDARD_MILEAGE,
  478.                                         V_EXCEPTION_MSG);
  479.          END IF;
  480.  
  481.          IF l_vehicle_abicode IS NULL
  482.          THEN
  483.             SELECT tvic.xml_iris_abi_model_fnc (in_vrm)
  484.               INTO abi_table
  485.               FROM DUAL;
  486.  
  487.             SELECT XMLAGG (
  488.                       XMLELEMENT (
  489.                          "ABI_CODE",
  490.                          CASE
  491.                             WHEN iris_count > 1
  492.                             THEN
  493.                                XMLFOREST (iris_abi "CODE",
  494.                                           iris_model "MODEL")
  495.                             ELSE
  496.                                XMLFOREST (iris_abi "CODE")
  497.                          END))
  498.               INTO l_abi_string
  499.               FROM TABLE (abi_table);
  500.  
  501.          ELSE
  502.             SELECT abi_object_type (l_vehicle_abicode, NULL, NULL)
  503.               BULK COLLECT INTO abi_table
  504.               FROM DUAL;
  505.  
  506.             SELECT XMLELEMENT (
  507.                       "ABI_CODE",
  508.                       XMLFOREST (LPAD (l_vehicle_abicode, 8, '0') "CODE"))
  509.               INTO l_abi_string
  510.               FROM DUAL;
  511.          END IF;
  512.  
  513.  
  514.          SELECT XMLCONCAT (
  515.                    XMLELEMENT (
  516.                       "DATASET",
  517.                       (SELECT XMLCONCAT (
  518.                                  XMLELEMENT (
  519.                                     "DVLA",
  520.                                     XMLELEMENT (
  521.                                        "VEHICLE",
  522.                                        XMLFOREST (
  523.                                           make_desc "MAKE",
  524.                                           model_desc "MODEL",
  525.                                           vehicle_desc "VEHICLE_DESC",
  526.                                           colour_desc "COLOUR")),
  527.                                     CASE
  528.                                                            WHEN l_body_class = 'MOTORCYCLE'
  529.                                                            THEN /* Not required if feed for MC only (vehicle_type MC) */
  530.                                                                  
  531.                                                               XMLELEMENT (
  532.                                                                  "MOTORCYCLES_VALUATION",
  533.                                                                                                                                   XMLFOREST (
  534.                                                                     l_mc_val_rec.make_desc "MAKE_DESC",
  535.                                                                     l_mc_val_rec.model_desc "MODEL_DESC",
  536.                                                                     l_mc_val_rec.count_vrm "COUNT_VRM",
  537.                                                                     l_mc_val_rec.make_model_code "MAKE_MODEL_CODE",
  538.                                                                     l_mc_val_rec.vip_code "VIP_CODE"))
  539.                                                         END),                                    
  540.                                  CASE
  541.                                     WHEN l_body_class = 'MOTORCYCLE'
  542.                                     THEN
  543.                                        (SELECT XMLAGG (
  544.                                                   XMLELEMENT (
  545.                                                      "VALUATION",
  546.                                            
  547.                                                      XMLFOREST (
  548.                                                         pat.make_desc "VIP_MAKE_DESC",
  549.                                                         pat.model_desc "VIP_MODEL_DESC",
  550.                                                         pat.vehicle_desc "VIP_VEHICLE_DESC",
  551.                                                         pat.fuel "VIP_FUEL",
  552.                                                         pat.mt "VIP_MT",
  553.                                                         year_manufactured "VIP_YEAR_MANUFACTURED",
  554.                                                         vip.plate "VIP_PLATE",
  555.                                                         pat.new_sale "VIP_NEW_SALE",
  556.                                                         v_mileage "ACTUAL_MILEAGE",
  557.                                                         XMLFOREST (
  558.                                                              ROUND (
  559.                                                                   (  pat.pat_sale
  560.                                                                    * (  1
  561.                                                                       + (  pc.rtr
  562.                                                                          / 100)))
  563.                                                                 * v_adjustment_factor
  564.                                                                 / 25)
  565.                                                            * 25 "VIP_RTR",
  566.                                                              ROUND (
  567.                                                                   (  pat.pat_sale
  568.                                                                    * (  1
  569.                                                                       + (  pc.trade
  570.                                                                          / 100)))
  571.                                                                 * v_adjustment_factor
  572.                                                                 / 25)
  573.                                                            * 25 "VIP_TRADE",
  574.                                                              ROUND (
  575.                                                                   (  pat.pat_sale
  576.                                                                    * (  1
  577.                                                                       + (  pc.av
  578.                                                                          / 100)))
  579.                                                                 * v_adjustment_factor
  580.                                                                 / 25)
  581.                                                            * 25 "VIP_AVERAGE",
  582.                                                              ROUND (
  583.                                                                   (  pat.pat_sale
  584.                                                                    * (  1
  585.                                                                       + (  pc.retail
  586.                                                                          / 100)))
  587.                                                                 * v_adjustment_factor
  588.                                                                 / 25)
  589.                                                            * 25 "VIP_RETAIL") "ADJUSTED")))
  590.                                           FROM tvic.vip_bike_codes vip,
  591.                                                tvic.dom dom,
  592.                                                tvic.vip_bike_pat pat,
  593.                                                tvic.vip_pat_codes_bike pc
  594.                                          WHERE     vip.vipcode =
  595.                                                       l_mc_val_rec.vip_code
  596.                                                AND pat.vipcode = vip.vipcode
  597.                                                AND pat.yearcode =
  598.                                                          TO_CHAR (l_reg_date,
  599.                                                                   'YY')
  600.                                                       || dom.plate
  601.                                                AND pc.yearcode = pat.yearcode
  602.                                                AND pc.pat_code = pat.pat_code
  603.                                                AND RTRIM (vip.plate) =
  604.                                                       dom.plate
  605.                                                AND l_reg_date =
  606.                                                       dom.vehicle_manuf_date
  607.                                                AND TO_CHAR (
  608.                                                       vip.year_manufactured) =
  609.                                                       TO_CHAR (l_manuf_date,
  610.                                                                'YYYY'))
  611.                                     ELSE
  612.                                    
  613.                                        (SELECT /*+ use_nl(vip) */
  614.                                                XMLAGG (
  615.                                                   XMLELEMENT (
  616.                                                      "VALUATION",
  617.                                                      XMLFOREST (
  618.                                                         pat.make_desc "VIP_MAKE_DESC",
  619.                                                         pat.model_desc "VIP_MODEL_DESC",
  620.                                                         pat.vehicle_desc "VIP_VEHICLE_DESC",
  621.                                                         pat.fuel "VIP_FUEL",
  622.                                                         pat.mt "VIP_MT",
  623.                                                         year_manufactured "VIP_YEAR_MANUFACTURED",
  624.                                                         vip.plate "VIP_PLATE",
  625.                                                         pat.new_sale "VIP_NEW_SALE",
  626.                                                         v_mileage "ACTUAL_MILEAGE",
  627.                                                         (SELECT XMLAGG (
  628.                                                                    XMLELEMENT (
  629.                                                                       EVALNAME pat_type,
  630.                                                                         ROUND (
  631.                                                                              (  pat.pat_sale
  632.                                                                               * (  1
  633.                                                                                  + (  pat_value
  634.                                                                                     / 100)))
  635.                                                                            * v_adjustment_factor
  636.                                                                            / 25)
  637.                                                                       * 25))
  638.                                                            FROM (  SELECT *
  639.                                                                      FROM (SELECT /*+ use_nl(vip) */
  640.                                                                                   DECODE (
  641.                                                                                      pat_type,
  642.                                                                                      'CDL CAR FORECOURT', 'CAR_FORECOURT',
  643.                                                                                      'CDL PRIVATE CLEAN', 'PRIVATE_CLEAN',
  644.                                                                                      'CDL TRADE IN CLEAN', 'TRADE_IN_CLEAN',
  645.                                                                                      'CDL AUCTION', 'AUCTION',
  646.                                                                                      'VIPDATA RTR', 'VIP_RTR',
  647.                                                                                      'VIPDATA TRADE', 'VIP_TRADE',
  648.                                                                                      'VIPDATA AVERAGE', 'VIP_AVERAGE',
  649.                                                                                      'VIPDATA RETAIL', 'VIP_RETAIL')
  650.                                                                                      pat_type,
  651.                                                                                   pat.vipcode
  652.                                                                                      pat_vipcode,
  653.                                                                                   pat.vip_type
  654.                                                                                      pat_viptype,
  655.                                                                                   pat_value
  656.                                                                              FROM tvic.mvris_to_vip_vw m2v,
  657.                                                                                   tvic.vip_codes_vw vip,
  658.                                                                                   tvic.dom dom,
  659.                                                                                   tvic.vip_pat_vw pat,
  660.                                                                                   tvic.vip_pat_codes pc
  661.                                                                             WHERE     m2v.mvris_code(+) =
  662.                                                                                          l_mvris_code
  663.                                                                                   AND vip.vipcode(+) =
  664.                                                                                          m2v.vip_code
  665.                                                                                   AND vip.vip_type =
  666.                                                                                          m2v.vip_type
  667.                                                                                   AND pat.vip_type =
  668.                                                                                          m2v.vip_type
  669.                                                                                   AND pat.vipcode =
  670.                                                                                          vip.vipcode
  671.                                                                                   AND pat.yearcode =
  672.                                                                                             TO_CHAR (
  673.                                                                                                l_reg_date,
  674.                                                                                                'YY')
  675.                                                                                          || dom.plate
  676.                                                                                   AND RTRIM (
  677.                                                                                          vip.plate) =
  678.                                                                                          dom.plate
  679.                                                                                   AND l_reg_date =
  680.                                                                                          dom.vehicle_manuf_date
  681.                                                                                   AND TO_CHAR (
  682.                                                                                          vip.year_manufactured) =
  683.                                                                                          TO_CHAR (
  684.                                                                                             l_manuf_date,
  685.                                                                                             'YYYY')
  686.                                                                                   AND pc.yearcode =
  687.                                                                                          pat.yearcode
  688.                                                                                   AND pc.pat_code =
  689.                                                                                          pat.pat_code
  690.                                                                                   AND pc.pat_type IN
  691.                                                                                          ('CDL CAR FORECOURT',
  692.                                                                                           'CDL PRIVATE CLEAN',
  693.                                                                                           'CDL TRADE IN CLEAN',
  694.                                                                                           'CDL AUCTION'))
  695.                                                                           pc2
  696.                                                                  ORDER BY DECODE (
  697.                                                                              pc2.pat_type,
  698.                                                                              'VIP_RTR', 1,
  699.                                                                              'VIP_TRADE', 2,
  700.                                                                              'VIP_AVERAGE', 3,
  701.                                                                              'VIP_RETAIL', 4,
  702.                                                                              'CAR_FORECOURT', 5,
  703.                                                                              'PRIVATE_CLEAN', 6,
  704.                                                                              'TRADE_IN_CLEAN', 7,
  705.                                                                              'AUCTION', 8))
  706.                                                           WHERE     pat_vipcode =
  707.                                                                        pat.vipcode
  708.                                                                 AND pat_viptype =
  709.                                                                        pat.vip_type) "ADJUSTED")))
  710.                                           FROM tvic.mvris_to_vip_vw m2v,
  711.                                                tvic.vip_codes_vw vip,
  712.                                                tvic.dom dom,
  713.                                                tvic.vip_pat_vw pat
  714.                                          WHERE     m2v.mvris_code(+) =
  715.                                                       l_mvris_code
  716.                                                AND vip.vipcode(+) =
  717.                                                       m2v.vip_code
  718.                                                AND vip.vip_type =
  719.                                                       m2v.vip_type
  720.                                                AND pat.vip_type =
  721.                                                       m2v.vip_type
  722.                                                AND pat.vipcode = vip.vipcode
  723.                                                AND pat.yearcode =
  724.                                                          TO_CHAR (l_reg_date,
  725.                                                                   'YY')
  726.                                                       || dom.plate
  727.                                                AND RTRIM (vip.plate) =
  728.                                                       dom.plate
  729.                                                AND l_reg_date =
  730.                                                       dom.vehicle_manuf_date
  731.                                                AND TO_CHAR (
  732.                                                       vip.year_manufactured) =
  733.                                                       TO_CHAR (l_manuf_date,
  734.                                                                'YYYY'))
  735.                                  END)
  736.                                  
  737.  
  738.                                    
  739.                          FROM uk_generic_full_vw v
  740.                         WHERE (       vehicle_vin = l_vehicle_vin
  741.                                   AND vehicle_vin_marker != 0
  742.                                OR vehicle_vrm = in_vrm)),
  743.                       (SELECT XMLCONCAT (
  744.                                  CASE
  745.                                     WHEN l_vehicle_count = 0
  746.                                     THEN
  747.                                        XMLCONCAT (XMLELEMENT ("DVLA", NULL))
  748.                                  END,
  749.                                  XMLELEMENT (
  750.                                     "MVRIS",
  751.                                     XMLFOREST (
  752.                                        mv2.engine_size "ENGINE_SIZE",
  753.                                        mv2.exact_cc "CC",
  754.                                        mv2.bhp_count "BHP_COUNT",
  755.                                        mv2.model_variant_name "MODEL_VARIANT_NAME",
  756.                                        mv2.door_count "DOOR_COUNT",
  757.                                        mv2.body_desc "BODY_DESC",
  758.                                        mv2.cab_type "CAB_TYPE",
  759.                                        mv2.gearbox_type "GEARBOX_TYPE",
  760.                                        mv2.number_of_axles "NUMBER_OF_AXLES"),
  761.                                     XMLELEMENT (
  762.                                        "MAKE",
  763.                                        XMLELEMENT ("DESC", mv2.make_desc)),
  764.                                     XMLELEMENT (
  765.                                        "MODEL",
  766.                                        XMLELEMENT ("DESC", mv2.model_desc)),
  767.                                     XMLELEMENT (
  768.                                        "BODY",
  769.                                        XMLELEMENT ("DESC", mv2.body_desc)),
  770.                                     XMLELEMENT (
  771.                                        "FUEL",
  772.                                        XMLELEMENT ("DESC", mv2.fuel_desc))))
  773.                          FROM tvic.vehicle_simple mv1,
  774.                               tvic.mvris_schedule2 mv2
  775.                         WHERE     mv1.mvris_code = mv2.mvris_code
  776.                               AND mv1.vehicle_vrm = in_vrm
  777.                               AND mv2.primary_fuel = 'Y')))
  778.                    data_set
  779.            INTO strreturn
  780.            FROM DUAL;
  781.                     DBMS_OUTPUT.put_line ('uk2: ' || l_body_class);
  782.       ELSE
  783.          DBMS_OUTPUT.put_line ('else: ' || in_vrm);
  784.  
  785.          SELECT XMLCONCAT (
  786.                    XMLELEMENT (
  787.                       "DATASET",
  788.                       (SELECT XMLCONCAT (
  789.                                  XMLELEMENT (
  790.                                     "DVLA",
  791.                                     XMLELEMENT (
  792.                                        "VEHICLE",
  793.                                        XMLFOREST (
  794.                                           make_desc "MAKE",
  795.                                           model_desc "MODEL",
  796.                                           vehicle_desc "VEHICLE_DESC",
  797.                                           colour_desc "COLOUR")),
  798.                                     CASE
  799.                                        WHEN l_body_class = 'MOTORCYCLE'
  800.                                        THEN
  801.                                           XMLELEMENT (
  802.                                              "MOTORCYCLES_VALUATION",
  803.                                              XMLFOREST (
  804.                                                 l_mc_val_rec.make_desc "MAKE_DESC",
  805.                                                 l_mc_val_rec.model_desc "MODEL_DESC",
  806.                                                 l_mc_val_rec.count_vrm "COUNT_VRM",
  807.                                                 l_mc_val_rec.make_model_code "MAKE_MODEL_CODE",
  808.                                                 l_mc_val_rec.vip_code "VIP_CODE"))
  809.                                     END),
  810.                                  CASE
  811.                                     WHEN l_body_class = 'MOTORCYCLE'
  812.                                     THEN
  813.                                        (SELECT XMLAGG (
  814.                                                   XMLELEMENT (
  815.                                                      "VALUATION",
  816.                                                      XMLFOREST (
  817.                                                         pat.make_desc "VIP_MAKE_DESC",
  818.                                                         pat.model_desc "VIP_MODEL_DESC",
  819.                                                         pat.vehicle_desc "VIP_VEHICLE_DESC",
  820.                                                         pat.fuel "VIP_FUEL",
  821.                                                         pat.mt "VIP_MT",
  822.                                                         year_manufactured "VIP_YEAR_MANUFACTURED",
  823.                                                         vip.plate "VIP_PLATE",
  824.                                                         pat.new_sale "VIP_NEW_SALE",
  825.                                                         v_mileage "ACTUAL_MILEAGE",
  826.                                                         XMLFOREST (
  827.                                                              ROUND (
  828.                                                                   (  pat.pat_sale
  829.                                                                    * (  1
  830.                                                                       + (  pc.rtr
  831.                                                                          / 100)))
  832.                                                                 * v_adjustment_factor
  833.                                                                 / 25)
  834.                                                            * 25 "VIP_RTR",
  835.                                                              ROUND (
  836.                                                                   (  pat.pat_sale
  837.                                                                    * (  1
  838.                                                                       + (  pc.trade
  839.                                                                          / 100)))
  840.                                                                 * v_adjustment_factor
  841.                                                                 / 25)
  842.                                                            * 25 "VIP_TRADE",
  843.                                                              ROUND (
  844.                                                                   (  pat.pat_sale
  845.                                                                    * (  1
  846.                                                                       + (  pc.av
  847.                                                                          / 100)))
  848.                                                                 * v_adjustment_factor
  849.                                                                 / 25)
  850.                                                            * 25 "VIP_AVERAGE",
  851.                                                              ROUND (
  852.                                                                   (  pat.pat_sale
  853.                                                                    * (  1
  854.                                                                       + (  pc.retail
  855.                                                                          / 100)))
  856.                                                                 * v_adjustment_factor
  857.                                                                 / 25)
  858.                                                            * 25 "VIP_RETAIL") "ADJUSTED")))
  859.                                           FROM tvic.vip_bike_codes vip,
  860.                                                tvic.dom dom,
  861.                                                tvic.vip_bike_pat pat,
  862.                                                tvic.vip_pat_codes_bike pc
  863.                                          WHERE     vip.vipcode =
  864.                                                       l_mc_val_rec.vip_code
  865.                                                AND pat.vipcode = vip.vipcode
  866.                                                AND pat.yearcode =
  867.                                                          TO_CHAR (l_reg_date,
  868.                                                                   'YY')
  869.                                                       || dom.plate
  870.                                                AND pc.yearcode = pat.yearcode
  871.                                                AND pc.pat_code = pat.pat_code
  872.                                                AND RTRIM (vip.plate) =
  873.                                                       dom.plate
  874.                                                AND l_reg_date =
  875.                                                       dom.vehicle_manuf_date
  876.                                                AND TO_CHAR (
  877.                                                       vip.year_manufactured) =
  878.                                                       TO_CHAR (l_manuf_date,
  879.                                                                'YYYY'))
  880.                                     ELSE
  881.                                        (SELECT /*+ use_nl(vip) */
  882.                                                XMLAGG (
  883.                                                   XMLELEMENT (
  884.                                                      "VALUATION",
  885.                                                      XMLFOREST (
  886.                                                         pat.make_desc "VIP_MAKE_DESC",
  887.                                                         pat.model_desc "VIP_MODEL_DESC",
  888.                                                         pat.vehicle_desc "VIP_VEHICLE_DESC",
  889.                                                         pat.fuel "VIP_FUEL",
  890.                                                         pat.mt "VIP_MT",
  891.                                                         year_manufactured "VIP_YEAR_MANUFACTURED",
  892.                                                         vip.plate "VIP_PLATE",
  893.                                                         pat.new_sale "VIP_NEW_SALE",
  894.                                                         v_mileage "ACTUAL_MILEAGE",
  895.                                                         (SELECT XMLAGG (
  896.                                                                    XMLELEMENT (
  897.                                                                       EVALNAME pat_type,
  898.                                                                         ROUND (
  899.                                                                              (  pat.pat_sale
  900.                                                                               * (  1
  901.                                                                                  + (  pat_value
  902.                                                                                     / 100)))
  903.                                                                            * v_adjustment_factor
  904.                                                                            / 25)
  905.                                                                       * 25))
  906.                                                            FROM (  SELECT *
  907.                                                                      FROM (SELECT /*+ use_nl(vip) */
  908.                                                                                   DECODE (
  909.                                                                                      pat_type,
  910.                                                                                      'CDL CAR FORECOURT', 'CAR_FORECOURT',
  911.                                                                                      'CDL PRIVATE CLEAN', 'PRIVATE_CLEAN',
  912.                                                                                      'CDL TRADE IN CLEAN', 'TRADE_IN_CLEAN',
  913.                                                                                      'CDL AUCTION', 'AUCTION',
  914.                                                                                      'VIPDATA RTR', 'VIP_RTR',
  915.                                                                                      'VIPDATA TRADE', 'VIP_TRADE',
  916.                                                                                      'VIPDATA AVERAGE', 'VIP_AVERAGE',
  917.                                                                                      'VIPDATA RETAIL', 'VIP_RETAIL')
  918.                                                                                      pat_type,
  919.                                                                                   pat.vipcode
  920.                                                                                      pat_vipcode,
  921.                                                                                   pat.vip_type
  922.                                                                                      pat_viptype,
  923.                                                                                   pat_value
  924.                                                                              FROM tvic.mvris_to_vip_vw m2v,
  925.                                                                                   tvic.vip_codes_vw vip,
  926.                                                                                   tvic.dom dom,
  927.                                                                                   tvic.vip_pat_vw pat,
  928.                                                                                   tvic.vip_pat_codes pc
  929.                                                                             WHERE     m2v.mvris_code(+) =
  930.                                                                                          l_mvris_code
  931.                                                                                   AND vip.vipcode(+) =
  932.                                                                                          m2v.vip_code
  933.                                                                                   AND vip.vip_type =
  934.                                                                                          m2v.vip_type
  935.                                                                                   AND pat.vip_type =
  936.                                                                                          m2v.vip_type
  937.                                                                                   AND pat.vipcode =
  938.                                                                                          vip.vipcode
  939.                                                                                   AND pat.yearcode =
  940.                                                                                             TO_CHAR (
  941.                                                                                                l_reg_date,
  942.                                                                                                'YY')
  943.                                                                                          || dom.plate
  944.                                                                                   AND RTRIM (
  945.                                                                                          vip.plate) =
  946.                                                                                          dom.plate
  947.                                                                                   AND l_reg_date =
  948.                                                                                          dom.vehicle_manuf_date
  949.                                                                                   AND TO_CHAR (
  950.                                                                                          vip.year_manufactured) =
  951.                                                                                          TO_CHAR (
  952.                                                                                             l_manuf_date,
  953.                                                                                             'YYYY')
  954.                                                                                   AND pc.yearcode =
  955.                                                                                          pat.yearcode
  956.                                                                                   AND pc.pat_code =
  957.                                                                                          pat.pat_code
  958.                                                                                   AND pc.pat_type IN
  959.                                                                                          ('CDL CAR FORECOURT',
  960.                                                                                           'CDL PRIVATE CLEAN',
  961.                                                                                           'CDL TRADE IN CLEAN',
  962.                                                                                           'CDL AUCTION'))
  963.                                                                           pc2
  964.                                                                  ORDER BY DECODE (
  965.                                                                              pc2.pat_type,
  966.                                                                              'VIP_RTR', 1,
  967.                                                                              'VIP_TRADE', 2,
  968.                                                                              'VIP_AVERAGE', 3,
  969.                                                                              'VIP_RETAIL', 4,
  970.                                                                              'CAR_FORECOURT', 5,
  971.                                                                              'PRIVATE_CLEAN', 6,
  972.                                                                              'TRADE_IN_CLEAN', 7,
  973.                                                                              'AUCTION', 8))
  974.                                                           WHERE     pat_vipcode =
  975.                                                                        pat.vipcode
  976.                                                                 AND pat_viptype =
  977.                                                                        pat.vip_type) "ADJUSTED")))
  978.                                           FROM tvic.mvris_to_vip_vw m2v,
  979.                                                tvic.vip_codes_vw vip,
  980.                                                tvic.dom dom,
  981.                                                tvic.vip_pat_vw pat
  982.                                          WHERE     m2v.mvris_code(+) =
  983.                                                       l_mvris_code
  984.                                                AND vip.vipcode(+) =
  985.                                                       m2v.vip_code
  986.                                                AND vip.vip_type =
  987.                                                       m2v.vip_type
  988.                                                AND pat.vip_type =
  989.                                                       m2v.vip_type
  990.                                                AND pat.vipcode = vip.vipcode
  991.                                                AND pat.yearcode =
  992.                                                          TO_CHAR (l_reg_date,
  993.                                                                   'YY')
  994.                                                       || dom.plate
  995.                                                AND RTRIM (vip.plate) =
  996.                                                       dom.plate
  997.                                                AND l_reg_date =
  998.                                                       dom.vehicle_manuf_date
  999.                                                AND TO_CHAR (
  1000.                                                       vip.year_manufactured) =
  1001.                                                       TO_CHAR (l_manuf_date,
  1002.                                                                'YYYY'))
  1003.                                  END)
  1004.                          FROM UK_GENERIC_FULL_VW V
  1005.                         WHERE (       VEHICLE_VIN = L_VEHICLE_VIN
  1006.                                   AND VEHICLE_VIN_MARKER != 0
  1007.                                OR VEHICLE_VRM = IN_VRM)),
  1008.                       (SELECT XMLCONCAT (
  1009.                                  CASE
  1010.                                     WHEN L_VEHICLE_COUNT = 0
  1011.                                     THEN
  1012.                                        XMLCONCAT (XMLELEMENT ("DVLA", NULL))
  1013.                                  END,
  1014.                                  XMLELEMENT (
  1015.                                     "MVRIS",
  1016.                                     XMLFOREST (
  1017.                                        mv2.engine_size "ENGINE_SIZE",
  1018.                                        mv2.exact_cc "CC",
  1019.                                        mv2.bhp_count "BHP_COUNT",
  1020.                                        mv2.model_variant_name "MODEL_VARIANT_NAME",
  1021.                                        mv2.door_count "DOOR_COUNT",
  1022.                                        mv2.body_desc "BODY_DESC",
  1023.                                        mv2.cab_type "CAB_TYPE",
  1024.                                        mv2.gearbox_type "GEARBOX_TYPE",
  1025.                                        mv2.number_of_axles "NUMBER_OF_AXLES"),
  1026.                                     XMLELEMENT (
  1027.                                        "MAKE",
  1028.                                        XMLELEMENT ("DESC", mv2.make_desc)),
  1029.                                     XMLELEMENT (
  1030.                                        "MODEL",
  1031.                                        XMLELEMENT ("DESC", mv2.model_desc)),
  1032.                                     XMLELEMENT (
  1033.                                        "BODY",
  1034.                                        XMLELEMENT ("DESC", mv2.body_desc)),
  1035.                                     XMLELEMENT (
  1036.                                        "FUEL",
  1037.                                        XMLELEMENT ("DESC", mv2.fuel_desc))))
  1038.                          FROM tvic.mvris_schedule1 mv1,
  1039.                               tvic.mvris_schedule2 mv2
  1040.                         WHERE     mv1.mvris_code = mv2.mvris_code
  1041.                               AND mv1.vehicle_vrm = in_vrm
  1042.                               AND mv2.primary_fuel = 'Y'
  1043.                               AND (mv1.vehicle_reg_date, mv1.mvris_seq) =
  1044.                                      (  SELECT MAX (vehicle_reg_date),
  1045.                                                MAX (mvris_seq)
  1046.                                           FROM tvic.mvris_schedule1 s1
  1047.                                          WHERE     vehicle_vrm = in_vrm
  1048.                                                AND vehicle_reg_date =
  1049.                                                       (SELECT MAX (
  1050.                                                                  vehicle_reg_date)
  1051.                                                          FROM tvic.mvris_schedule1
  1052.                                                         WHERE vehicle_vrm =
  1053.                                                                  s1.vehicle_vrm)
  1054.                                       GROUP BY vehicle_reg_date))))
  1055.                    data_set
  1056.            INTO strreturn
  1057.            FROM DUAL;
  1058.       END IF;
  1059.    END IF;
  1060.  
  1061.    RETURN strreturn;
  1062. END xml_slow_fnc;
  1063. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement