Sample code for 30+ languages & platforms
SQL Server

UPS Rate Request

See more UPS Examples

Simple UPS Rate Example

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    -- This example assumes the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

    DECLARE @http int
    EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    -- Use this online tool to generate code from sample JSON:
    -- Generate Code to Create JSON

    -- The following JSON is sent in the request body.

    -- {
    --   "RateRequest": {
    --     "Request": {
    --       "TransactionReference": {
    --         "CustomerContext": "CustomerContext"
    --       }
    --     },
    --     "Shipment": {
    --       "Shipper": {
    --         "Name": "ShipperName",
    --         "ShipperNumber": "ShipperNumber",
    --         "Address": {
    --           "AddressLine": [
    --             "ShipperAddressLine",
    --             "ShipperAddressLine",
    --             "ShipperAddressLine"
    --           ],
    --           "City": "TIMONIUM",
    --           "StateProvinceCode": "MD",
    --           "PostalCode": "21093",
    --           "CountryCode": "US"
    --         }
    --       },
    --       "ShipTo": {
    --         "Name": "ShipToName",
    --         "Address": {
    --           "AddressLine": [
    --             "ShipToAddressLine",
    --             "ShipToAddressLine",
    --             "ShipToAddressLine"
    --           ],
    --           "City": "Alpharetta",
    --           "StateProvinceCode": "GA",
    --           "PostalCode": "30005",
    --           "CountryCode": "US"
    --         }
    --       },
    --       "ShipFrom": {
    --         "Name": "ShipFromName",
    --         "Address": {
    --           "AddressLine": [
    --             "ShipFromAddressLine",
    --             "ShipFromAddressLine",
    --             "ShipFromAddressLine"
    --           ],
    --           "City": "TIMONIUM",
    --           "StateProvinceCode": "MD",
    --           "PostalCode": "21093",
    --           "CountryCode": "US"
    --         }
    --       },
    --       "PaymentDetails": {
    --         "ShipmentCharge": {
    --           "Type": "01",
    --           "BillShipper": {
    --             "AccountNumber": "ShipperNumber"
    --           }
    --         }
    --       },
    --       "Service": {
    --         "Code": "03",
    --         "Description": "Ground"
    --       },
    --       "NumOfPieces": "1",
    --       "Package": {
    --         "PackagingType": {
    --           "Code": "02",
    --           "Description": "Packaging"
    --         },
    --         "Dimensions": {
    --           "UnitOfMeasurement": {
    --             "Code": "IN",
    --             "Description": "Inches"
    --           },
    --           "Length": "5",
    --           "Width": "5",
    --           "Height": "5"
    --         },
    --         "PackageWeight": {
    --           "UnitOfMeasurement": {
    --             "Code": "LBS",
    --             "Description": "Pounds"
    --           },
    --           "Weight": "1"
    --         }
    --       }
    --     }
    --   }
    -- }

    DECLARE @json int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT

    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Request.TransactionReference.CustomerContext', 'CustomerContext'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Shipper.Name', 'ShipperName'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Shipper.ShipperNumber', 'ShipperNumber'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Shipper.Address.AddressLine[0]', 'ShipperAddressLine'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Shipper.Address.AddressLine[1]', 'ShipperAddressLine'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Shipper.Address.AddressLine[2]', 'ShipperAddressLine'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Shipper.Address.City', 'TIMONIUM'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Shipper.Address.StateProvinceCode', 'MD'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Shipper.Address.PostalCode', '21093'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Shipper.Address.CountryCode', 'US'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipTo.Name', 'ShipToName'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipTo.Address.AddressLine[0]', 'ShipToAddressLine'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipTo.Address.AddressLine[1]', 'ShipToAddressLine'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipTo.Address.AddressLine[2]', 'ShipToAddressLine'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipTo.Address.City', 'Alpharetta'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipTo.Address.StateProvinceCode', 'GA'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipTo.Address.PostalCode', '30005'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipTo.Address.CountryCode', 'US'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipFrom.Name', 'ShipFromName'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipFrom.Address.AddressLine[0]', 'ShipFromAddressLine'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipFrom.Address.AddressLine[1]', 'ShipFromAddressLine'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipFrom.Address.AddressLine[2]', 'ShipFromAddressLine'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipFrom.Address.City', 'TIMONIUM'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipFrom.Address.StateProvinceCode', 'MD'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipFrom.Address.PostalCode', '21093'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.ShipFrom.Address.CountryCode', 'US'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.PaymentDetails.ShipmentCharge.Type', '01'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.PaymentDetails.ShipmentCharge.BillShipper.AccountNumber', 'ShipperNumber'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Service.Code', '03'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Service.Description', 'Ground'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.NumOfPieces', '1'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Package.PackagingType.Code', '02'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Package.PackagingType.Description', 'Packaging'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Package.Dimensions.UnitOfMeasurement.Code', 'IN'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Package.Dimensions.UnitOfMeasurement.Description', 'Inches'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Package.Dimensions.Length', '5'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Package.Dimensions.Width', '5'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Package.Dimensions.Height', '5'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Package.PackageWeight.UnitOfMeasurement.Code', 'LBS'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Package.PackageWeight.UnitOfMeasurement.Description', 'Pounds'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'RateRequest.Shipment.Package.PackageWeight.Weight', '1'

    -- Load the OAuth2 access token obtained via client credentials as shown 
    -- in this UPS OAuth2 Client Credentials example.

    DECLARE @jsonToken int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @jsonToken OUT

    EXEC sp_OAMethod @jsonToken, 'LoadFile', @success OUT, 'qa_data/tokens/ups_oauth2_token.json'
    IF @success <> 1
      BEGIN

        PRINT 'Failed to load ups_oauth2_token.json'
        EXEC @hr = sp_OADestroy @http
        EXEC @hr = sp_OADestroy @json
        EXEC @hr = sp_OADestroy @jsonToken
        RETURN
      END

    -- The access token JSON looks something like this:

    -- {
    --   "token_type": "Bearer",
    --   "issued_at": "1686911985606",
    --   "client_id": "2498righ8wr6aihe98rt8rhowirtyw9er6twe80rtywrehrt",
    --   "access_token": "eyJraW......R2sbqrY",
    --   "expires_in": "14399",
    --   "status": "approved"
    -- }

    -- Adds the "Authorization: Bearer <YOUR_TOKEN_HERE>" header.
    EXEC sp_OAMethod @jsonToken, 'StringOf', @sTmp0 OUT, 'access_token'
    EXEC sp_OASetProperty @http, 'AuthToken', @sTmp0
    EXEC sp_OAMethod @http, 'SetRequestHeader', NULL, 'Content-Type', 'application/json'
    EXEC sp_OAMethod @http, 'SetRequestHeader', NULL, 'transId', 'string'
    EXEC sp_OAMethod @http, 'SetRequestHeader', NULL, 'transactionSrc', 'testing'

    -- The "version" indicates Rate API to display the new release features in Rate API response based on Rate release.
    -- Supported values: v1, v1601, v1607, v1701, v1707, v2108, v2205.
    EXEC sp_OAMethod @http, 'SetUrlVar', @success OUT, 'version', 'v1'

    -- The "requestoption" has the following valid values:
    -- Rate = The server rates (The default Request option is Rate if a Request Option is not provided). 
    -- Shop = The server validates the shipment, and returns rates for all UPS products from the ShipFrom to the ShipTo addresses. 
    -- Rate is the only valid request option for Ground Freight Pricing requests.
    EXEC sp_OAMethod @http, 'SetUrlVar', @success OUT, 'requestoption', 'Rate'

    DECLARE @resp int
    EXEC @hr = sp_OACreate 'Chilkat.HttpResponse', @resp OUT

    EXEC sp_OAMethod @http, 'HttpJson', @success OUT, 'POST', 'https://wwwcie.ups.com/api/rating/{$version}/{$requestoption}?additionalinfo=string', @json, 'application/json', @resp
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @http
        EXEC @hr = sp_OADestroy @json
        EXEC @hr = sp_OADestroy @jsonToken
        EXEC @hr = sp_OADestroy @resp
        RETURN
      END

    DECLARE @sbResponseBody int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbResponseBody OUT

    EXEC sp_OAMethod @resp, 'GetBodySb', @success OUT, @sbResponseBody

    DECLARE @jResp int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @jResp OUT

    EXEC sp_OAMethod @jResp, 'LoadSb', @success OUT, @sbResponseBody
    EXEC sp_OASetProperty @jResp, 'EmitCompact', 0


    PRINT 'Response Body:'
    EXEC sp_OAMethod @jResp, 'Emit', @sTmp0 OUT
    PRINT @sTmp0

    -- ----------------------------------------------------------------------------------------------------------
    -- Important: If you get the following error response, read further for the solution..
    -- 
    -- {
    --   "response": {
    --     "errors": [
    --       {
    --         "code": "250002",
    --         "message": "Invalid Authentication Information."
    --       }
    --     ]
    --   }
    -- }
    -- 
    -- It means you didn't add the Rating API permission to your app.
    -- To add the Rating API, login to your developer account and go to your Apps page at https://developer.ups.com/apps?loc=en_US
    -- Then edit your app and add the Rating API.
    -- ----------------------------------------------------------------------------------------------------------

    DECLARE @respStatusCode int
    EXEC sp_OAGetProperty @resp, 'StatusCode', @respStatusCode OUT

    PRINT 'Response Status Code = ' + @respStatusCode
    IF @respStatusCode >= 400
      BEGIN

        PRINT 'Response Header:'
        EXEC sp_OAGetProperty @resp, 'Header', @sTmp0 OUT
        PRINT @sTmp0

        PRINT 'Failed.'
        EXEC @hr = sp_OADestroy @http
        EXEC @hr = sp_OADestroy @json
        EXEC @hr = sp_OADestroy @jsonToken
        EXEC @hr = sp_OADestroy @resp
        EXEC @hr = sp_OADestroy @sbResponseBody
        EXEC @hr = sp_OADestroy @jResp
        RETURN
      END

    -- Sample JSON response:
    -- (Sample code for parsing the JSON response is shown below)

    -- {
    --   "RateResponse": {
    --     "Response": {
    --       "ResponseStatus": {
    --         "Code": "s",
    --         "Description": "string"
    --       },
    --       "Alert": [
    --         {
    --           "Code": "string",
    --           "Description": "string"
    --         }
    --       ],
    --       "AlertDetail": [
    --         {
    --           "Code": "string",
    --           "Description": "string",
    --           "ElementLevelInformation": {
    --             "Level": "s",
    --             "ElementIdentifier": [
    --               {
    --                 "Code": null,
    --                 "Value": null
    --               }
    --             ]
    --           }
    --         }
    --       ],
    --       "TransactionReference": {
    --         "CustomerContext": "string"
    --       }
    --     },
    --     "RatedShipment": [
    --       {
    --         "Disclaimer": [
    --           {
    --             "Code": "st",
    --             "Description": "string"
    --           }
    --         ],
    --         "Service": {
    --           "Code": "str",
    --           "Description": "string"
    --         },
    --         "RateChart": "s",
    --         "RatedShipmentAlert": [
    --           {
    --             "Code": "string",
    --             "Description": "string"
    --           }
    --         ],
    --         "BillableWeightCalculationMethod": "st",
    --         "RatingMethod": "st",
    --         "BillingWeight": {
    --           "UnitOfMeasurement": {
    --             "Code": "str",
    --             "Description": "string"
    --           },
    --           "Weight": "strin"
    --         },
    --         "TransportationCharges": {
    --           "CurrencyCode": "str",
    --           "MonetaryValue": "stringstringstri"
    --         },
    --         "BaseServiceCharge": {
    --           "CurrencyCode": "str",
    --           "MonetaryValue": "stringstringstri"
    --         },
    --         "ItemizedCharges": [
    --           {
    --             "Code": "str",
    --             "Description": "string",
    --             "CurrencyCode": "str",
    --             "MonetaryValue": "string",
    --             "SubType": "string"
    --           }
    --         ],
    --         "FRSShipmentData": {
    --           "TransportationCharges": {
    --             "GrossCharge": {
    --               "CurrencyCode": "str",
    --               "MonetaryValue": "string"
    --             },
    --             "DiscountAmount": {
    --               "CurrencyCode": "str",
    --               "MonetaryValue": "string"
    --             },
    --             "DiscountPercentage": "st",
    --             "NetCharge": {
    --               "CurrencyCode": "str",
    --               "MonetaryValue": "string"
    --             }
    --           },
    --           "FreightDensityRate": {
    --             "Density": "strin",
    --             "TotalCubicFeet": "string"
    --           },
    --           "HandlingUnits": [
    --             {
    --               "Quantity": "string",
    --               "Type": {
    --                 "Code": null,
    --                 "Description": null
    --               },
    --               "Dimensions": {
    --                 "UnitOfMeasurement": null,
    --                 "Length": null,
    --                 "Width": null,
    --                 "Height": null
    --               },
    --               "AdjustedHeight": {
    --                 "Value": null,
    --                 "UnitOfMeasurement": null
    --               }
    --             }
    --           ]
    --         },
    --         "ServiceOptionsCharges": {
    --           "CurrencyCode": "str",
    --           "MonetaryValue": "string"
    --         },
    --         "TaxCharges": [
    --           {
    --             "Type": "string",
    --             "MonetaryValue": "string"
    --           }
    --         ],
    --         "TotalCharges": {
    --           "CurrencyCode": "str",
    --           "MonetaryValue": "string"
    --         },
    --         "TotalChargesWithTaxes": {
    --           "CurrencyCode": "str",
    --           "MonetaryValue": "string"
    --         },
    --         "NegotiatedRateCharges": {
    --           "ItemizedCharges": [
    --             {
    --               "Code": "str",
    --               "Description": "string",
    --               "CurrencyCode": "str",
    --               "MonetaryValue": "string",
    --               "SubType": "string"
    --             }
    --           ],
    --           "TaxCharges": [
    --             {
    --               "Type": "string",
    --               "MonetaryValue": "string"
    --             }
    --           ],
    --           "TotalCharge": {
    --             "CurrencyCode": "string",
    --             "MonetaryValue": "string"
    --           },
    --           "TotalChargesWithTaxes": {
    --             "CurrencyCode": "string",
    --             "MonetaryValue": "string"
    --           }
    --         },
    --         "RatedPackage": [
    --           {
    --             "BaseServiceCharge": {
    --               "CurrencyCode": "str",
    --               "MonetaryValue": "string"
    --             },
    --             "TransportationCharges": {
    --               "CurrencyCode": "string",
    --               "MonetaryValue": "string"
    --             },
    --             "ServiceOptionsCharges": {
    --               "CurrencyCode": "string",
    --               "MonetaryValue": "string"
    --             },
    --             "TotalCharges": {
    --               "CurrencyCode": "string",
    --               "MonetaryValue": "string"
    --             },
    --             "Weight": "string",
    --             "BillingWeight": {
    --               "UnitOfMeasurement": {
    --                 "Code": null,
    --                 "Description": null
    --               },
    --               "Weight": "string"
    --             },
    --             "Accessorial": [
    --               {
    --                 "Code": null,
    --                 "Description": null
    --               }
    --             ],
    --             "ItemizedCharges": [
    --               {
    --                 "Code": null,
    --                 "Description": null,
    --                 "CurrencyCode": null,
    --                 "MonetaryValue": null,
    --                 "SubType": null
    --               }
    --             ],
    --             "NegotiatedCharges": {
    --               "ItemizedCharges": [
    --                 null
    --               ]
    --             },
    --             "SimpleRate": {
    --               "Code": "st"
    --             },
    --             "RateModifier": [
    --               {
    --                 "ModifierType": null,
    --                 "ModifierDesc": null,
    --                 "Amount": null
    --               }
    --             ]
    --           }
    --         ],
    --         "TimeInTransit": {
    --           "PickupDate": "stringst",
    --           "DocumentsOnlyIndicator": "string",
    --           "PackageBillType": "st",
    --           "ServiceSummary": {
    --             "Service": {
    --               "Description": "string"
    --             },
    --             "GuaranteedIndicator": "string",
    --             "Disclaimer": "string",
    --             "EstimatedArrival": {
    --               "Arrival": {
    --                 "Date": null,
    --                 "Time": null
    --               },
    --               "BusinessDaysInTransit": "strin",
    --               "Pickup": {
    --                 "Date": null,
    --                 "Time": null
    --               },
    --               "DayOfWeek": "string",
    --               "CustomerCenterCutoff": "string",
    --               "DelayCount": "str",
    --               "HolidayCount": "st",
    --               "RestDays": "st",
    --               "TotalTransitDays": "strin"
    --             },
    --             "SaturdayDelivery": "string",
    --             "SaturdayDeliveryDisclaimer": "string",
    --             "SundayDelivery": "string",
    --             "SundayDeliveryDisclaimer": "string"
    --           },
    --           "AutoDutyCode": "st",
    --           "Disclaimer": "string"
    --         },
    --         "ScheduledDeliveryDate": "string",
    --         "RoarRatedIndicator": "string"
    --       }
    --     ]
    --   }
    -- }

    -- Sample code for parsing the JSON response...
    -- Use the following online tool to generate parsing code from sample JSON:
    -- Generate Parsing Code from JSON

    DECLARE @Level nvarchar(4000)

    DECLARE @j int

    DECLARE @count_j int

    DECLARE @Value nvarchar(4000)

    DECLARE @ServiceCode nvarchar(4000)

    DECLARE @ServiceDescription nvarchar(4000)

    DECLARE @RateChart nvarchar(4000)

    DECLARE @BillableWeightCalculationMethod nvarchar(4000)

    DECLARE @RatingMethod nvarchar(4000)

    DECLARE @UnitOfMeasurementCode nvarchar(4000)

    DECLARE @UnitOfMeasurementDescription nvarchar(4000)

    DECLARE @Weight nvarchar(4000)

    DECLARE @CurrencyCode nvarchar(4000)

    DECLARE @MonetaryValue nvarchar(4000)

    DECLARE @BaseServiceChargeCurrencyCode nvarchar(4000)

    DECLARE @BaseServiceChargeMonetaryValue nvarchar(4000)

    DECLARE @GrossChargeCurrencyCode nvarchar(4000)

    DECLARE @GrossChargeMonetaryValue nvarchar(4000)

    DECLARE @DiscountAmountCurrencyCode nvarchar(4000)

    DECLARE @DiscountAmountMonetaryValue nvarchar(4000)

    DECLARE @DiscountPercentage nvarchar(4000)

    DECLARE @NetChargeCurrencyCode nvarchar(4000)

    DECLARE @NetChargeMonetaryValue nvarchar(4000)

    DECLARE @Density nvarchar(4000)

    DECLARE @TotalCubicFeet nvarchar(4000)

    DECLARE @ServiceOptionsChargesCurrencyCode nvarchar(4000)

    DECLARE @ServiceOptionsChargesMonetaryValue nvarchar(4000)

    DECLARE @TotalChargesCurrencyCode nvarchar(4000)

    DECLARE @TotalChargesMonetaryValue nvarchar(4000)

    DECLARE @TotalChargesWithTaxesCurrencyCode nvarchar(4000)

    DECLARE @TotalChargesWithTaxesMonetaryValue nvarchar(4000)

    DECLARE @TotalChargeCurrencyCode nvarchar(4000)

    DECLARE @TotalChargeMonetaryValue nvarchar(4000)

    DECLARE @PickupDate nvarchar(4000)

    DECLARE @DocumentsOnlyIndicator nvarchar(4000)

    DECLARE @PackageBillType nvarchar(4000)

    DECLARE @GuaranteedIndicator nvarchar(4000)

    DECLARE @Disclaimer nvarchar(4000)

    DECLARE @Date nvarchar(4000)

    DECLARE @Time nvarchar(4000)

    DECLARE @BusinessDaysInTransit nvarchar(4000)

    DECLARE @PickupTime nvarchar(4000)

    DECLARE @DayOfWeek nvarchar(4000)

    DECLARE @CustomerCenterCutoff nvarchar(4000)

    DECLARE @DelayCount nvarchar(4000)

    DECLARE @HolidayCount nvarchar(4000)

    DECLARE @RestDays nvarchar(4000)

    DECLARE @TotalTransitDays nvarchar(4000)

    DECLARE @SaturdayDelivery nvarchar(4000)

    DECLARE @SaturdayDeliveryDisclaimer nvarchar(4000)

    DECLARE @SundayDelivery nvarchar(4000)

    DECLARE @SundayDeliveryDisclaimer nvarchar(4000)

    DECLARE @AutoDutyCode nvarchar(4000)

    DECLARE @TimeInTransitDisclaimer nvarchar(4000)

    DECLARE @ScheduledDeliveryDate nvarchar(4000)

    DECLARE @RoarRatedIndicator nvarchar(4000)

    DECLARE @SubType nvarchar(4000)

    DECLARE @Quantity nvarchar(4000)

    DECLARE @TypeCode nvarchar(4000)

    DECLARE @TypeDescription nvarchar(4000)

    DECLARE @UnitOfMeasurement nvarchar(4000)

    DECLARE @Length nvarchar(4000)

    DECLARE @Width nvarchar(4000)

    DECLARE @Height nvarchar(4000)

    DECLARE @AdjustedHeightValue nvarchar(4000)

    DECLARE @AdjustedHeightUnitOfMeasurement nvarchar(4000)

    DECLARE @v_Type nvarchar(4000)

    DECLARE @TransportationChargesCurrencyCode nvarchar(4000)

    DECLARE @TransportationChargesMonetaryValue nvarchar(4000)

    DECLARE @BillingWeightWeight nvarchar(4000)

    DECLARE @SimpleRateCode nvarchar(4000)

    DECLARE @k int

    DECLARE @count_k int

    DECLARE @nullVal int

    DECLARE @ModifierType nvarchar(4000)

    DECLARE @ModifierDesc nvarchar(4000)

    DECLARE @Amount nvarchar(4000)

    DECLARE @Code nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @Code OUT, 'RateResponse.Response.ResponseStatus.Code'
    DECLARE @Description nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @Description OUT, 'RateResponse.Response.ResponseStatus.Description'
    DECLARE @CustomerContext nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @CustomerContext OUT, 'RateResponse.Response.TransactionReference.CustomerContext'
    DECLARE @i int
    SELECT @i = 0
    DECLARE @count_i int
    EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_i OUT, 'RateResponse.Response.Alert'
    WHILE @i < @count_i
      BEGIN
        EXEC sp_OASetProperty @jResp, 'I', @i
        EXEC sp_OAMethod @jResp, 'StringOf', @Code OUT, 'RateResponse.Response.Alert[i].Code'
        EXEC sp_OAMethod @jResp, 'StringOf', @Description OUT, 'RateResponse.Response.Alert[i].Description'
        SELECT @i = @i + 1
      END
    SELECT @i = 0
    EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_i OUT, 'RateResponse.Response.AlertDetail'
    WHILE @i < @count_i
      BEGIN
        EXEC sp_OASetProperty @jResp, 'I', @i
        EXEC sp_OAMethod @jResp, 'StringOf', @Code OUT, 'RateResponse.Response.AlertDetail[i].Code'
        EXEC sp_OAMethod @jResp, 'StringOf', @Description OUT, 'RateResponse.Response.AlertDetail[i].Description'
        EXEC sp_OAMethod @jResp, 'StringOf', @Level OUT, 'RateResponse.Response.AlertDetail[i].ElementLevelInformation.Level'
        SELECT @j = 0
        EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_j OUT, 'RateResponse.Response.AlertDetail[i].ElementLevelInformation.ElementIdentifier'
        WHILE @j < @count_j
          BEGIN
            EXEC sp_OASetProperty @jResp, 'J', @j
            EXEC sp_OAMethod @jResp, 'StringOf', @Code OUT, 'RateResponse.Response.AlertDetail[i].ElementLevelInformation.ElementIdentifier[j].Code'
            EXEC sp_OAMethod @jResp, 'StringOf', @Value OUT, 'RateResponse.Response.AlertDetail[i].ElementLevelInformation.ElementIdentifier[j].Value'
            SELECT @j = @j + 1
          END
        SELECT @i = @i + 1
      END
    SELECT @i = 0
    EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_i OUT, 'RateResponse.RatedShipment'
    WHILE @i < @count_i
      BEGIN
        EXEC sp_OASetProperty @jResp, 'I', @i
        EXEC sp_OAMethod @jResp, 'StringOf', @ServiceCode OUT, 'RateResponse.RatedShipment[i].Service.Code'
        EXEC sp_OAMethod @jResp, 'StringOf', @ServiceDescription OUT, 'RateResponse.RatedShipment[i].Service.Description'
        EXEC sp_OAMethod @jResp, 'StringOf', @RateChart OUT, 'RateResponse.RatedShipment[i].RateChart'
        EXEC sp_OAMethod @jResp, 'StringOf', @BillableWeightCalculationMethod OUT, 'RateResponse.RatedShipment[i].BillableWeightCalculationMethod'
        EXEC sp_OAMethod @jResp, 'StringOf', @RatingMethod OUT, 'RateResponse.RatedShipment[i].RatingMethod'
        EXEC sp_OAMethod @jResp, 'StringOf', @UnitOfMeasurementCode OUT, 'RateResponse.RatedShipment[i].BillingWeight.UnitOfMeasurement.Code'
        EXEC sp_OAMethod @jResp, 'StringOf', @UnitOfMeasurementDescription OUT, 'RateResponse.RatedShipment[i].BillingWeight.UnitOfMeasurement.Description'
        EXEC sp_OAMethod @jResp, 'StringOf', @Weight OUT, 'RateResponse.RatedShipment[i].BillingWeight.Weight'
        EXEC sp_OAMethod @jResp, 'StringOf', @CurrencyCode OUT, 'RateResponse.RatedShipment[i].TransportationCharges.CurrencyCode'
        EXEC sp_OAMethod @jResp, 'StringOf', @MonetaryValue OUT, 'RateResponse.RatedShipment[i].TransportationCharges.MonetaryValue'
        EXEC sp_OAMethod @jResp, 'StringOf', @BaseServiceChargeCurrencyCode OUT, 'RateResponse.RatedShipment[i].BaseServiceCharge.CurrencyCode'
        EXEC sp_OAMethod @jResp, 'StringOf', @BaseServiceChargeMonetaryValue OUT, 'RateResponse.RatedShipment[i].BaseServiceCharge.MonetaryValue'
        EXEC sp_OAMethod @jResp, 'StringOf', @GrossChargeCurrencyCode OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.TransportationCharges.GrossCharge.CurrencyCode'
        EXEC sp_OAMethod @jResp, 'StringOf', @GrossChargeMonetaryValue OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.TransportationCharges.GrossCharge.MonetaryValue'
        EXEC sp_OAMethod @jResp, 'StringOf', @DiscountAmountCurrencyCode OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.TransportationCharges.DiscountAmount.CurrencyCode'
        EXEC sp_OAMethod @jResp, 'StringOf', @DiscountAmountMonetaryValue OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.TransportationCharges.DiscountAmount.MonetaryValue'
        EXEC sp_OAMethod @jResp, 'StringOf', @DiscountPercentage OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.TransportationCharges.DiscountPercentage'
        EXEC sp_OAMethod @jResp, 'StringOf', @NetChargeCurrencyCode OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.TransportationCharges.NetCharge.CurrencyCode'
        EXEC sp_OAMethod @jResp, 'StringOf', @NetChargeMonetaryValue OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.TransportationCharges.NetCharge.MonetaryValue'
        EXEC sp_OAMethod @jResp, 'StringOf', @Density OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.FreightDensityRate.Density'
        EXEC sp_OAMethod @jResp, 'StringOf', @TotalCubicFeet OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.FreightDensityRate.TotalCubicFeet'
        EXEC sp_OAMethod @jResp, 'StringOf', @ServiceOptionsChargesCurrencyCode OUT, 'RateResponse.RatedShipment[i].ServiceOptionsCharges.CurrencyCode'
        EXEC sp_OAMethod @jResp, 'StringOf', @ServiceOptionsChargesMonetaryValue OUT, 'RateResponse.RatedShipment[i].ServiceOptionsCharges.MonetaryValue'
        EXEC sp_OAMethod @jResp, 'StringOf', @TotalChargesCurrencyCode OUT, 'RateResponse.RatedShipment[i].TotalCharges.CurrencyCode'
        EXEC sp_OAMethod @jResp, 'StringOf', @TotalChargesMonetaryValue OUT, 'RateResponse.RatedShipment[i].TotalCharges.MonetaryValue'
        EXEC sp_OAMethod @jResp, 'StringOf', @TotalChargesWithTaxesCurrencyCode OUT, 'RateResponse.RatedShipment[i].TotalChargesWithTaxes.CurrencyCode'
        EXEC sp_OAMethod @jResp, 'StringOf', @TotalChargesWithTaxesMonetaryValue OUT, 'RateResponse.RatedShipment[i].TotalChargesWithTaxes.MonetaryValue'
        EXEC sp_OAMethod @jResp, 'StringOf', @TotalChargeCurrencyCode OUT, 'RateResponse.RatedShipment[i].NegotiatedRateCharges.TotalCharge.CurrencyCode'
        EXEC sp_OAMethod @jResp, 'StringOf', @TotalChargeMonetaryValue OUT, 'RateResponse.RatedShipment[i].NegotiatedRateCharges.TotalCharge.MonetaryValue'
        EXEC sp_OAMethod @jResp, 'StringOf', @TotalChargesWithTaxesCurrencyCode OUT, 'RateResponse.RatedShipment[i].NegotiatedRateCharges.TotalChargesWithTaxes.CurrencyCode'
        EXEC sp_OAMethod @jResp, 'StringOf', @TotalChargesWithTaxesMonetaryValue OUT, 'RateResponse.RatedShipment[i].NegotiatedRateCharges.TotalChargesWithTaxes.MonetaryValue'
        EXEC sp_OAMethod @jResp, 'StringOf', @PickupDate OUT, 'RateResponse.RatedShipment[i].TimeInTransit.PickupDate'
        EXEC sp_OAMethod @jResp, 'StringOf', @DocumentsOnlyIndicator OUT, 'RateResponse.RatedShipment[i].TimeInTransit.DocumentsOnlyIndicator'
        EXEC sp_OAMethod @jResp, 'StringOf', @PackageBillType OUT, 'RateResponse.RatedShipment[i].TimeInTransit.PackageBillType'
        EXEC sp_OAMethod @jResp, 'StringOf', @ServiceDescription OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.Service.Description'
        EXEC sp_OAMethod @jResp, 'StringOf', @GuaranteedIndicator OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.GuaranteedIndicator'
        EXEC sp_OAMethod @jResp, 'StringOf', @Disclaimer OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.Disclaimer'
        EXEC sp_OAMethod @jResp, 'StringOf', @Date OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.Arrival.Date'
        EXEC sp_OAMethod @jResp, 'StringOf', @Time OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.Arrival.Time'
        EXEC sp_OAMethod @jResp, 'StringOf', @BusinessDaysInTransit OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.BusinessDaysInTransit'
        EXEC sp_OAMethod @jResp, 'StringOf', @PickupDate OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.Pickup.Date'
        EXEC sp_OAMethod @jResp, 'StringOf', @PickupTime OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.Pickup.Time'
        EXEC sp_OAMethod @jResp, 'StringOf', @DayOfWeek OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.DayOfWeek'
        EXEC sp_OAMethod @jResp, 'StringOf', @CustomerCenterCutoff OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.CustomerCenterCutoff'
        EXEC sp_OAMethod @jResp, 'StringOf', @DelayCount OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.DelayCount'
        EXEC sp_OAMethod @jResp, 'StringOf', @HolidayCount OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.HolidayCount'
        EXEC sp_OAMethod @jResp, 'StringOf', @RestDays OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.RestDays'
        EXEC sp_OAMethod @jResp, 'StringOf', @TotalTransitDays OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.EstimatedArrival.TotalTransitDays'
        EXEC sp_OAMethod @jResp, 'StringOf', @SaturdayDelivery OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.SaturdayDelivery'
        EXEC sp_OAMethod @jResp, 'StringOf', @SaturdayDeliveryDisclaimer OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.SaturdayDeliveryDisclaimer'
        EXEC sp_OAMethod @jResp, 'StringOf', @SundayDelivery OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.SundayDelivery'
        EXEC sp_OAMethod @jResp, 'StringOf', @SundayDeliveryDisclaimer OUT, 'RateResponse.RatedShipment[i].TimeInTransit.ServiceSummary.SundayDeliveryDisclaimer'
        EXEC sp_OAMethod @jResp, 'StringOf', @AutoDutyCode OUT, 'RateResponse.RatedShipment[i].TimeInTransit.AutoDutyCode'
        EXEC sp_OAMethod @jResp, 'StringOf', @TimeInTransitDisclaimer OUT, 'RateResponse.RatedShipment[i].TimeInTransit.Disclaimer'
        EXEC sp_OAMethod @jResp, 'StringOf', @ScheduledDeliveryDate OUT, 'RateResponse.RatedShipment[i].ScheduledDeliveryDate'
        EXEC sp_OAMethod @jResp, 'StringOf', @RoarRatedIndicator OUT, 'RateResponse.RatedShipment[i].RoarRatedIndicator'
        SELECT @j = 0
        EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_j OUT, 'RateResponse.RatedShipment[i].Disclaimer'
        WHILE @j < @count_j
          BEGIN
            EXEC sp_OASetProperty @jResp, 'J', @j
            EXEC sp_OAMethod @jResp, 'StringOf', @Code OUT, 'RateResponse.RatedShipment[i].Disclaimer[j].Code'
            EXEC sp_OAMethod @jResp, 'StringOf', @Description OUT, 'RateResponse.RatedShipment[i].Disclaimer[j].Description'
            SELECT @j = @j + 1
          END
        SELECT @j = 0
        EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_j OUT, 'RateResponse.RatedShipment[i].RatedShipmentAlert'
        WHILE @j < @count_j
          BEGIN
            EXEC sp_OASetProperty @jResp, 'J', @j
            EXEC sp_OAMethod @jResp, 'StringOf', @Code OUT, 'RateResponse.RatedShipment[i].RatedShipmentAlert[j].Code'
            EXEC sp_OAMethod @jResp, 'StringOf', @Description OUT, 'RateResponse.RatedShipment[i].RatedShipmentAlert[j].Description'
            SELECT @j = @j + 1
          END
        SELECT @j = 0
        EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_j OUT, 'RateResponse.RatedShipment[i].ItemizedCharges'
        WHILE @j < @count_j
          BEGIN
            EXEC sp_OASetProperty @jResp, 'J', @j
            EXEC sp_OAMethod @jResp, 'StringOf', @Code OUT, 'RateResponse.RatedShipment[i].ItemizedCharges[j].Code'
            EXEC sp_OAMethod @jResp, 'StringOf', @Description OUT, 'RateResponse.RatedShipment[i].ItemizedCharges[j].Description'
            EXEC sp_OAMethod @jResp, 'StringOf', @CurrencyCode OUT, 'RateResponse.RatedShipment[i].ItemizedCharges[j].CurrencyCode'
            EXEC sp_OAMethod @jResp, 'StringOf', @MonetaryValue OUT, 'RateResponse.RatedShipment[i].ItemizedCharges[j].MonetaryValue'
            EXEC sp_OAMethod @jResp, 'StringOf', @SubType OUT, 'RateResponse.RatedShipment[i].ItemizedCharges[j].SubType'
            SELECT @j = @j + 1
          END
        SELECT @j = 0
        EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_j OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits'
        WHILE @j < @count_j
          BEGIN
            EXEC sp_OASetProperty @jResp, 'J', @j
            EXEC sp_OAMethod @jResp, 'StringOf', @Quantity OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].Quantity'
            EXEC sp_OAMethod @jResp, 'StringOf', @TypeCode OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].Type.Code'
            EXEC sp_OAMethod @jResp, 'StringOf', @TypeDescription OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].Type.Description'
            EXEC sp_OAMethod @jResp, 'StringOf', @UnitOfMeasurement OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].Dimensions.UnitOfMeasurement'
            EXEC sp_OAMethod @jResp, 'StringOf', @Length OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].Dimensions.Length'
            EXEC sp_OAMethod @jResp, 'StringOf', @Width OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].Dimensions.Width'
            EXEC sp_OAMethod @jResp, 'StringOf', @Height OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].Dimensions.Height'
            EXEC sp_OAMethod @jResp, 'StringOf', @AdjustedHeightValue OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].AdjustedHeight.Value'
            EXEC sp_OAMethod @jResp, 'StringOf', @AdjustedHeightUnitOfMeasurement OUT, 'RateResponse.RatedShipment[i].FRSShipmentData.HandlingUnits[j].AdjustedHeight.UnitOfMeasurement'
            SELECT @j = @j + 1
          END
        SELECT @j = 0
        EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_j OUT, 'RateResponse.RatedShipment[i].TaxCharges'
        WHILE @j < @count_j
          BEGIN
            EXEC sp_OASetProperty @jResp, 'J', @j
            EXEC sp_OAMethod @jResp, 'StringOf', @v_Type OUT, 'RateResponse.RatedShipment[i].TaxCharges[j].Type'
            EXEC sp_OAMethod @jResp, 'StringOf', @MonetaryValue OUT, 'RateResponse.RatedShipment[i].TaxCharges[j].MonetaryValue'
            SELECT @j = @j + 1
          END
        SELECT @j = 0
        EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_j OUT, 'RateResponse.RatedShipment[i].NegotiatedRateCharges.ItemizedCharges'
        WHILE @j < @count_j
          BEGIN
            EXEC sp_OASetProperty @jResp, 'J', @j
            EXEC sp_OAMethod @jResp, 'StringOf', @Code OUT, 'RateResponse.RatedShipment[i].NegotiatedRateCharges.ItemizedCharges[j].Code'
            EXEC sp_OAMethod @jResp, 'StringOf', @Description OUT, 'RateResponse.RatedShipment[i].NegotiatedRateCharges.ItemizedCharges[j].Description'
            EXEC sp_OAMethod @jResp, 'StringOf', @CurrencyCode OUT, 'RateResponse.RatedShipment[i].NegotiatedRateCharges.ItemizedCharges[j].CurrencyCode'
            EXEC sp_OAMethod @jResp, 'StringOf', @MonetaryValue OUT, 'RateResponse.RatedShipment[i].NegotiatedRateCharges.ItemizedCharges[j].MonetaryValue'
            EXEC sp_OAMethod @jResp, 'StringOf', @SubType OUT, 'RateResponse.RatedShipment[i].NegotiatedRateCharges.ItemizedCharges[j].SubType'
            SELECT @j = @j + 1
          END
        SELECT @j = 0
        EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_j OUT, 'RateResponse.RatedShipment[i].NegotiatedRateCharges.TaxCharges'
        WHILE @j < @count_j
          BEGIN
            EXEC sp_OASetProperty @jResp, 'J', @j
            EXEC sp_OAMethod @jResp, 'StringOf', @v_Type OUT, 'RateResponse.RatedShipment[i].NegotiatedRateCharges.TaxCharges[j].Type'
            EXEC sp_OAMethod @jResp, 'StringOf', @MonetaryValue OUT, 'RateResponse.RatedShipment[i].NegotiatedRateCharges.TaxCharges[j].MonetaryValue'
            SELECT @j = @j + 1
          END
        SELECT @j = 0
        EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_j OUT, 'RateResponse.RatedShipment[i].RatedPackage'
        WHILE @j < @count_j
          BEGIN
            EXEC sp_OASetProperty @jResp, 'J', @j
            EXEC sp_OAMethod @jResp, 'StringOf', @BaseServiceChargeCurrencyCode OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].BaseServiceCharge.CurrencyCode'
            EXEC sp_OAMethod @jResp, 'StringOf', @BaseServiceChargeMonetaryValue OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].BaseServiceCharge.MonetaryValue'
            EXEC sp_OAMethod @jResp, 'StringOf', @TransportationChargesCurrencyCode OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].TransportationCharges.CurrencyCode'
            EXEC sp_OAMethod @jResp, 'StringOf', @TransportationChargesMonetaryValue OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].TransportationCharges.MonetaryValue'
            EXEC sp_OAMethod @jResp, 'StringOf', @ServiceOptionsChargesCurrencyCode OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].ServiceOptionsCharges.CurrencyCode'
            EXEC sp_OAMethod @jResp, 'StringOf', @ServiceOptionsChargesMonetaryValue OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].ServiceOptionsCharges.MonetaryValue'
            EXEC sp_OAMethod @jResp, 'StringOf', @TotalChargesCurrencyCode OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].TotalCharges.CurrencyCode'
            EXEC sp_OAMethod @jResp, 'StringOf', @TotalChargesMonetaryValue OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].TotalCharges.MonetaryValue'
            EXEC sp_OAMethod @jResp, 'StringOf', @Weight OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].Weight'
            EXEC sp_OAMethod @jResp, 'StringOf', @UnitOfMeasurementCode OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].BillingWeight.UnitOfMeasurement.Code'
            EXEC sp_OAMethod @jResp, 'StringOf', @UnitOfMeasurementDescription OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].BillingWeight.UnitOfMeasurement.Description'
            EXEC sp_OAMethod @jResp, 'StringOf', @BillingWeightWeight OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].BillingWeight.Weight'
            EXEC sp_OAMethod @jResp, 'StringOf', @SimpleRateCode OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].SimpleRate.Code'
            SELECT @k = 0
            EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_k OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].Accessorial'
            WHILE @k < @count_k
              BEGIN
                EXEC sp_OASetProperty @jResp, 'K', @k
                EXEC sp_OAMethod @jResp, 'StringOf', @Code OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].Accessorial[k].Code'
                EXEC sp_OAMethod @jResp, 'StringOf', @Description OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].Accessorial[k].Description'
                SELECT @k = @k + 1
              END
            SELECT @k = 0
            EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_k OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].ItemizedCharges'
            WHILE @k < @count_k
              BEGIN
                EXEC sp_OASetProperty @jResp, 'K', @k
                EXEC sp_OAMethod @jResp, 'StringOf', @Code OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].ItemizedCharges[k].Code'
                EXEC sp_OAMethod @jResp, 'StringOf', @Description OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].ItemizedCharges[k].Description'
                EXEC sp_OAMethod @jResp, 'StringOf', @CurrencyCode OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].ItemizedCharges[k].CurrencyCode'
                EXEC sp_OAMethod @jResp, 'StringOf', @MonetaryValue OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].ItemizedCharges[k].MonetaryValue'
                EXEC sp_OAMethod @jResp, 'StringOf', @SubType OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].ItemizedCharges[k].SubType'
                SELECT @k = @k + 1
              END
            SELECT @k = 0
            EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_k OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].NegotiatedCharges.ItemizedCharges'
            WHILE @k < @count_k
              BEGIN
                EXEC sp_OASetProperty @jResp, 'K', @k
                EXEC sp_OAMethod @jResp, 'IsNullOf', @nullVal OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].NegotiatedCharges.ItemizedCharges[k]'
                SELECT @k = @k + 1
              END
            SELECT @k = 0
            EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_k OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].RateModifier'
            WHILE @k < @count_k
              BEGIN
                EXEC sp_OASetProperty @jResp, 'K', @k
                EXEC sp_OAMethod @jResp, 'StringOf', @ModifierType OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].RateModifier[k].ModifierType'
                EXEC sp_OAMethod @jResp, 'StringOf', @ModifierDesc OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].RateModifier[k].ModifierDesc'
                EXEC sp_OAMethod @jResp, 'StringOf', @Amount OUT, 'RateResponse.RatedShipment[i].RatedPackage[j].RateModifier[k].Amount'
                SELECT @k = @k + 1
              END
            SELECT @j = @j + 1
          END
        SELECT @i = @i + 1
      END

    EXEC @hr = sp_OADestroy @http
    EXEC @hr = sp_OADestroy @json
    EXEC @hr = sp_OADestroy @jsonToken
    EXEC @hr = sp_OADestroy @resp
    EXEC @hr = sp_OADestroy @sbResponseBody
    EXEC @hr = sp_OADestroy @jResp


END
GO