Exécutez-vous cela dans sqlplus? Extract renvoie une instance XMLType et s'affiche selon longue variable, dont la valeur par défaut est 80. Si vous augmentez la valeur, vous pouvez voir l'URL complète.
SQL> with x(contact_data) as (
select '<?xml version="1.0" encoding="UTF-8"?>
<service_orders count="1">
<service_order order_number="fakefakefake" id="fakefakefake">
<images count="2">
<image src="https://s3.amazonaws.com/some_subfolder/deeper/deeper_still/ever_deeper/really_big_long_url_goes_here"/>
</images>
</service_order>
</service_orders>' from dual
)
select
length(extract(xmltype(contact_data),'/service_orders/service_order/images/image/@src')) as url_length,
extract(xmltype(contact_data),'/service_orders/service_order/images/image/@src') as url
from
x;
URL_LENGTH
----------
URL
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
101
https://s3.amazonaws.com/some_subfolder/deeper/deeper_still/ever_deeper/really_b
Après avoir augmenté la valeur de la variable longue,
SQL> set long 120
SQL> with x(contact_data) as (
select '<?xml version="1.0" encoding="UTF-8"?>
<service_orders count="1">
<service_order order_number="fakefakefake" id="fakefakefake">
<images count="2">
<image src="https://s3.amazonaws.com/some_subfolder/deeper/deeper_still/ever_deeper/really_big_long_url_goes_here"/>
</images>
</service_order>
</service_orders>' from dual
)
select
length(extract(xmltype(contact_data),'/service_orders/service_order/images/image/@src')) as url_length,
extract(xmltype(contact_data),'/service_orders/service_order/images/image/@src') as url
from
x;
URL_LENGTH
----------
URL
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
101
https://s3.amazonaws.com/some_subfolder/deeper/deeper_still/ever_deeper/really_big_long_url_goes_here
Vous pouvez utiliser la fonction getStringVal pour convertir le XMLType en varchar2, qui ne dépend pas d'une variable longue.
SQL> set long 80
SQL> with x(contact_data) as (
select '<?xml version="1.0" encoding="UTF-8"?>
<service_orders count="1">
<service_order order_number="fakefakefake" id="fakefakefake">
<images count="2">
<image src="https://s3.amazonaws.com/some_subfolder/deeper/deeper_still/ever_deeper/really_big_long_url_goes_here"/>
</images>
</service_order>
</service_orders>' from dual
)
select
length(extract(xmltype(contact_data),'/service_orders/service_order/images/image/@src')) as url_length,
extract(xmltype(contact_data),'/service_orders/service_order/images/image/@src').getStringval() as url
from
x;
URL_LENGTH
----------
URL
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
101
https://s3.amazonaws.com/some_subfolder/deeper/deeper_still/ever_deeper/really_big_long_url_goes_here