El Blogcito de Ricardo Dufoo

Consult the OPP service log for details…..

por en Mar.30, 2011, archivado en EBS, Oracle

El día de ayer mientras ejecutaba un reporte de Oracle EBS me topé con el siguiente error:

Procesamiento posterior de solicitud 1702549 rechazado a 29-MAR-2011 19:54:45 con el mensaje de error:
One or more post-processing actions failed. Consult the OPP service log for details.

¿Cómo consultar ese archivo «OPP service log» para encontrar el error? El buen Javiruchis me pasó la siguiente consulta para identificar el archivo a consultar:

SELECT fcpp.concurrent_request_id req_id, fcp.node_name, fcp.logfile_name
FROM fnd_conc_pp_actions fcpp, fnd_concurrent_processes fcp
WHERE fcpp.processor_id = fcp.concurrent_process_id
AND fcpp.action_type = 6
AND fcpp.concurrent_request_id = &&request_id

Espero les sirva….

 

 

1 Comentario : mas...

PL/SQL para convertir un número a letra

por en Mar.25, 2011, archivado en EBS, Oracle

A veces es necesario convertir cantidades númericas a letras (para hacer cheques o facturas x ejemplo). A continuación una función para lograr esto:

CREATE OR REPLACE FUNCTION NUM_TO_WORD_SP (p_qty number)
RETURN VARCHAR
IS
num_string VARCHAR (250);
zero VARCHAR (2);
errm VARCHAR2 (150);
BEGIN
num_string := ‘ ‘;

IF (100 * (ABS (p_qty) – TRUNC (ABS (p_qty))) < 10) AND (100 * (ABS(p_qty) – TRUNC(ABS(p_qty))) > 0)
THEN
zero := ‘0’;
ELSE
zero := NULL;
END IF;

SELECT DECODE (.00000000001
* (MOD (ABS (p_qty), 1000000000000)
– MOD (ABS (p_qty), 100000000000)),
1,
DECODE (SUBSTR (TO_CHAR (TRUNC (p_qty, 0)), -12, 3),
‘100’, ‘Cien ‘,
‘Ciento ‘),
2,
‘Doscientos ‘,
3,
‘Trescientos ‘,
4,
‘Cuatrocientos ‘,
5,
‘Quinientos ‘,
6,
‘Seiscientos ‘,
7,
‘Setecientos ‘,
8,
‘Ochocientos ‘,
9,
‘Novecientos ‘,
0,
NULL,
‘error’
)
|| DECODE (.0000000001
* (MOD (ABS (p_qty), 100000000000)
– MOD (ABS (p_qty), 10000000000)),
1,
(DECODE (.000000001
* (MOD (ABS (p_qty), 10000000000)
– MOD (ABS (p_qty), 1000000000)),
0,
‘Diez ‘,
1,
‘Once ‘,
2,
‘Doce ‘,
3,
‘Trece ‘,
4,
‘Catorce ‘,
5,
‘Quince ‘,
6,
‘Dieciseis ‘,
7,
‘Diecisiete ‘,
8,
‘Dieciocho ‘,
9,
‘Diecinueve ‘,
‘error’
)),
2,
(DECODE (.000000001
* (MOD (ABS (p_qty), 10000000000)
– MOD (ABS (p_qty), 1000000000)),
0,
‘Veinte ‘,
1,
‘Ventiuno ‘,
2,
‘Veintidos ‘,
3,
‘Veintitres ‘,
4,
‘Veinticuatro ‘,
5,
‘Veinticinco ‘,
6,
‘Veintiseis ‘,
7,
‘Veintisiete ‘,
8,
‘Veintiocho ‘,
9,
‘Veintinueve ‘,
‘error’
)),
3,
‘Treinta ‘,
4,
‘Cuarenta ‘,
5,
‘Cincuenta ‘,
6,
‘Sesenta ‘,
7,
‘Setenta ‘,
8,
‘Ochenta ‘,
9,
‘Noventa ‘,
NULL
)
|| DECODE (.000000001
* (MOD (ABS (p_qty), 10000000000)
– MOD (ABS (p_qty), 1000000000)),
0,
NULL,
(DECODE (.0000000001
* (MOD (ABS (p_qty), 100000000000)
– MOD (ABS (p_qty), 10000000000)),
0,
NULL,
1,
NULL,
2,
NULL,
‘y ‘
))
)
|| DECODE (.0000000001
* (MOD (ABS (p_qty), 100000000000)
– MOD (ABS (p_qty), 10000000000)),
1,
NULL,
2,
NULL,
(DECODE (.000000001
* (MOD (ABS (p_qty), 10000000000)
– MOD (ABS (p_qty), 1000000000)),
1,
‘Un ‘,
2,
‘Dos ‘,
3,
‘Tres ‘,
4,
‘Cuatro ‘,
5,
‘Cinco ‘,
6,
‘Seis ‘,
7,
‘Siete ‘,
8,
‘Ocho ‘,
9,
‘Nueve ‘,
0,
NULL,
‘error’
))
)
|| DECODE (SIGN (ABS (p_qty) – 999.99),
1,
DECODE (.00000000001
* (MOD (ABS (p_qty), 1000000000000)
– MOD (ABS (p_qty), 100000000000)),
0,
DECODE (.0000000001
* (MOD (ABS (p_qty), 100000000000)
– MOD (ABS (p_qty), 10000000000)),
0,
DECODE (.000000001
* (MOD (ABS (p_qty), 10000000000)
– MOD (ABS (p_qty), 1000000000
)),
0,
NULL,
DECODE (SUBSTR (TO_CHAR(TRUNC (p_qty,
0
)),
-10,
1
),
‘1’,
‘Billon ‘,
‘Billones ‘
)
),
‘Billones ‘
),
‘Billones ‘
),
NULL
)
|| DECODE (.00000001
* (MOD (ABS (p_qty), 1000000000)
– MOD (ABS (p_qty), 100000000)),
1,
DECODE (SUBSTR (TO_CHAR (TRUNC (p_qty, 0)), -9, 3),
‘100’, ‘Cien ‘,
‘Ciento ‘),
2,
‘Doscientos ‘,
3,
‘Trescientos ‘,
4,
‘Cuatrocientos ‘,
5,
‘Quinientos ‘,
6,
‘Seiscientos ‘,
7,
‘Setecientos ‘,
8,
‘Ochocientos ‘,
9,
‘Novecientos ‘,
0,
NULL,
‘error’
)
|| DECODE (.0000001
* (MOD (ABS (p_qty), 100000000)
– MOD (ABS (p_qty), 10000000)),
1,
(DECODE (.000001
* (MOD (ABS (p_qty), 10000000)
– MOD (ABS (p_qty), 1000000)),
0,
‘Diez ‘,
1,
‘Once ‘,
2,
‘Doce ‘,
3,
‘Trece ‘,
4,
‘Catorce ‘,
5,
‘Quince ‘,
6,
‘Dieciseis ‘,
7,
‘Diecisiete ‘,
8,
‘Dieciocho ‘,
9,
‘Diecinueve ‘,
‘ERROR’
)),
2,
(DECODE (.000001
* (MOD (ABS (p_qty), 10000000)
– MOD (ABS (p_qty), 1000000)),
0,
‘Veinte ‘,
1,
‘Veintiun ‘,
2,
‘Veintidos ‘,
3,
‘Veintitres ‘,
4,
‘Veinticuatro ‘,
5,
‘Veinticinco ‘,
6,
‘Veintiseis ‘,
7,
‘Veintisiete ‘,
8,
‘Veintiocho ‘,
9,
‘Veintinueve ‘,
‘ERROR’
)),
3,
‘Treinta ‘,
4,
‘Cuarenta ‘,
5,
‘Cincuenta ‘,
6,
‘Sesenta ‘,
7,
‘Setenta ‘,
8,
‘Ochenta ‘,
9,
‘Noventa ‘,
NULL
)
|| DECODE (.000001
* (MOD (ABS (p_qty), 10000000)
– MOD (ABS (p_qty), 1000000)),
0,
NULL,
(DECODE (.0000001
* (MOD (ABS (p_qty), 100000000)
– MOD (ABS (p_qty), 10000000)),
0,
NULL,
1,
NULL,
2,
NULL,
‘y ‘
))
)
|| DECODE (.0000001
* (MOD (ABS (p_qty), 100000000)
– MOD (ABS (p_qty), 10000000)),
1,
NULL,
2,
NULL,
(DECODE (.000001
* (MOD (ABS (p_qty), 10000000)
– MOD (ABS (p_qty), 1000000)),
1,
‘Un ‘,
2,
‘Dos ‘,
3,
‘Tres ‘,
4,
‘Cuatro ‘,
5,
‘Cinco ‘,
6,
‘Seis ‘,
7,
‘Siete ‘,
8,
‘Ocho ‘,
9,
‘Nueve ‘,
0,
NULL,
‘error’
))
)
|| DECODE (SIGN (ABS (p_qty) – 999.99),
1,
DECODE (.00000001
* (MOD (ABS (p_qty), 1000000000)
– MOD (ABS (p_qty), 100000000)),
0,
DECODE (.0000001
* (MOD (ABS (p_qty), 100000000)
– MOD (ABS (p_qty), 10000000)),
0,
DECODE (.000001
* (MOD (ABS (p_qty), 10000000)
– MOD (ABS (p_qty), 1000000)),
0,
NULL,
DECODE (SUBSTR (TO_CHAR(TRUNC (p_qty,
0
)),
-7,
1
),
‘1’,
‘Millon ‘,
‘Millones ‘
)
),
‘Millones ‘
),
‘Millones ‘
),
NULL
)
|| DECODE (.00001
* (MOD (ABS (p_qty), 1000000) – MOD (ABS (p_qty), 100000)),
1,
DECODE (SUBSTR (TO_CHAR (TRUNC (p_qty, 0)), -6, 3),
‘100’, ‘Cien ‘,
‘Ciento ‘),
2,
‘Doscientos ‘,
3,
‘Trescientos ‘,
4,
‘Cuatrocientos ‘,
5,
‘Quinientos ‘,
6,
‘Seiscientos ‘,
7,
‘Setecientos ‘,
8,
‘Ochocientos ‘,
9,
‘Novecientos ‘,
0,
NULL,
‘error’
)
|| DECODE (.0001
* (MOD (ABS (p_qty), 100000) – MOD (ABS (p_qty), 10000)),
1,
(DECODE (.001
* (MOD (ABS (p_qty), 10000)
– MOD (ABS (p_qty), 1000)),
0,
‘Diez ‘,
1,
‘Once ‘,
2,
‘Doce ‘,
3,
‘Trece ‘,
4,
‘Catorce ‘,
5,
‘Quince ‘,
6,
‘Dieciseis ‘,
7,
‘Diecisiete ‘,
8,
‘Dieciocho ‘,
9,
‘Diecinueve ‘,
‘ERROR’
)),
2,
(DECODE (.001
* (MOD (ABS (p_qty), 10000)
– MOD (ABS (p_qty), 1000)),
0,
‘Veinte ‘,
1,
‘Ventiun ‘,
2,
‘Ventidos ‘,
3,
‘Ventitres ‘,
4,
‘Venticuatro ‘,
5,
‘Venticinco ‘,
6,
‘Ventiseis ‘,
7,
‘Ventisiete ‘,
8,
‘Ventiocho ‘,
9,
‘Ventinueve ‘,
‘ERROR’
)),
3,
‘Treinta ‘,
4,
‘Cuarenta ‘,
5,
‘Cincuenta ‘,
6,
‘Sesenta ‘,
7,
‘Setenta ‘,
8,
‘Ochenta ‘,
9,
‘Noventa ‘,
NULL
)
|| DECODE (.001
* (MOD (ABS (p_qty), 10000) – MOD (ABS (p_qty), 1000)),
0,
NULL,
(DECODE (.0001
* (MOD (ABS (p_qty), 100000)
– MOD (ABS (p_qty), 10000)),
0,
NULL,
1,
NULL,
2,
NULL,
‘y ‘
))
)
|| DECODE (.0001
* (MOD (ABS (p_qty), 100000) – MOD (ABS (p_qty), 10000)),
1,
NULL,
2,
NULL,
(DECODE (.001
* (MOD (ABS (p_qty), 10000)
– MOD (ABS (p_qty), 1000)),
1,
‘Un ‘,
2,
‘Dos ‘,
3,
‘Tres ‘,
4,
‘Cuatro ‘,
5,
‘Cinco ‘,
6,
‘Seis ‘,
7,
‘Siete ‘,
8,
‘Ocho ‘,
9,
‘Nueve ‘,
0,
NULL,
‘error’
))
)
|| DECODE (SIGN (ABS (p_qty) – 999.99),
1,
DECODE (.00001
* (MOD (ABS (p_qty), 1000000)
– MOD (ABS (p_qty), 100000)),
0,
DECODE (.0001
* (MOD (ABS (p_qty), 100000)
– MOD (ABS (p_qty), 10000)),
0,
DECODE (.001
* (MOD (ABS (p_qty), 10000)
– MOD (ABS (p_qty), 1000)),
0,
NULL,
‘Mil ‘
),
‘Mil ‘
),
‘Mil ‘
),
NULL
)
|| DECODE (.01 * (MOD (ABS (p_qty), 1000) – MOD (ABS (p_qty), 100)),
1,
DECODE (SUBSTR (TO_CHAR (TRUNC (p_qty, 0)), -3, 3),
‘100’, ‘Cien ‘,
‘Ciento ‘),
2,
‘Doscientos ‘,
3,
‘Trescientos ‘,
4,
‘Cuatrocientos ‘,
5,
‘Quinientos ‘,
6,
‘Seiscientos ‘,
7,
‘Setecientos ‘,
8,
‘Ochocientos ‘,
9,
‘Novecientos ‘,
NULL
)
|| DECODE (.1 * (MOD (ABS (p_qty), 100) – MOD (ABS (p_qty), 10)),
1,
(DECODE (TRUNC (MOD (ABS (p_qty), 10)),
0, ‘Diez ‘,
1, ‘Once ‘,
2, ‘Doce ‘,
3, ‘Trece ‘,
4, ‘Catorce ‘,
5, ‘Quince ‘,
6, ‘Dieciseis ‘,
7, ‘Diecisiete ‘,
8, ‘Dieciocho ‘,
9, ‘Diecinueve ‘,
‘ERROR’)),
2,
(DECODE (TRUNC (MOD (ABS (p_qty), 10)),
0, ‘Veinte ‘,
1, ‘Ventiun ‘,
2, ‘Ventidos ‘,
3, ‘Ventitres ‘,
4, ‘Venticuatro ‘,
5, ‘Venticinco ‘,
6, ‘Ventiseis ‘,
7, ‘Ventisiete ‘,
8, ‘Ventiocho ‘,
9, ‘Ventinueve ‘,
‘ERROR’)),
2,
‘Veinte ‘,
3,
‘Treinta ‘,
4,
‘Cuarenta ‘,
5,
‘Cincuenta ‘,
6,
‘Sesenta ‘,
7,
‘Setenta ‘,
8,
‘Ochenta ‘,
9,
‘Noventa ‘,
NULL
)
|| DECODE (TRUNC (MOD (ABS (p_qty), 10)),
0,
NULL,
(DECODE (.1
* (MOD (ABS (p_qty), 100)
– MOD (ABS (p_qty), 10)),
0,
NULL,
1,
NULL,
2,
NULL,
‘y ‘
))
)
|| DECODE (.1 * (MOD (ABS (p_qty), 100) – MOD (ABS (p_qty), 10)),
1,
NULL,
2,
NULL,
(DECODE (TRUNC (MOD (ABS (p_qty), 10)),
1, ‘Un’,
2, ‘Dos’,
3, ‘Tres’,
4, ‘Cuatro’,
5, ‘Cinco’,
6, ‘Seis’,
7, ‘Siete’,
8, ‘Ocho’,
9, ‘Nueve’,
0, NULL,
‘error’))
)
|| DECODE (MOD (TRUNC (p_qty, 0), 1000000),
0, DECODE (p_qty, 0, NULL, ‘de ‘),
NULL)
|| DECODE (TRUNC (p_qty, 0), 0, ‘Zero ‘, NULL)
|| zero
||’ ‘|| DECODE (100 * (ABS (p_qty) – TRUNC (ABS (p_qty))),
0, ’00’,
100 * (ABS (p_qty) – TRUNC (ABS (p_qty)))
)
|| ‘/100 ‘
INTO num_string
FROM DUAL;

RETURN UPPER (num_string);
RETURN NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RETURN (‘111no se encontro dato’);
WHEN OTHERS
THEN
RETURN (‘112no se encontro dato’);
END NUM_TO_WORD_SP;

Escribir un Comentario mas...

Is IE9 a modern browser?

por en Feb.16, 2011, archivado en Browser, Internet, MSIE

Por si les queda alguna duda….

IE9 & HTML5.

Escribir un Comentario mas...

PL/SQL «String Tokenizer»

por en Feb.15, 2011, archivado en Oracle

El término String Tokenizer viene de una clase de Java (java.util.StringTokenizer) la cual sirve para obtener los elementos de una cadena de caracteres (String) separada por un carácter delimitador (Token).

Me he topado en diferentes ocasiones con este problema en la base de datos de Oracle así que, sin meterle java (lo cual hace más lento el proceso) aquí una pequeña función que nos da el elemento de la posición n de una cadena separada por algún delimitador (pipe por defecto).

FUNCTION get_element (
      p_collection   IN   VARCHAR2,
      p_item         IN   NUMBER,
      p_delim        IN   VARCHAR2 DEFAULT '|'
   )
      RETURN VARCHAR2
   AS
      v_start_pos   NUMBER;
      v_end_pos     NUMBER;
   BEGIN
      IF p_item = 1
      THEN
         v_start_pos := 1;
      ELSE
         v_start_pos := INSTR (p_collection, p_delim, 1, p_item – 1);

         IF v_start_pos = 0
         THEN
            RETURN NULL;
         ELSE
            v_start_pos := v_start_pos + LENGTH (p_delim);
         END IF;
      END IF;

      v_end_pos := INSTR (p_collection, p_delim, v_start_pos, 1);

      IF v_end_pos = 0
      THEN
         RETURN clean (SUBSTR (p_collection, v_start_pos));
      ELSE
         RETURN clean (SUBSTR (p_collection,
                               v_start_pos,
                               v_end_pos – v_start_pos
                              )
                      );
      END IF;
   END get_element;

Escribir un Comentario mas...

Cliente de twitter para la base de datos de Oracle.

por en Feb.15, 2011, archivado en Oracle

Sin entrar en detalles de como llegué a esto, es posible tener un cliente de twitter en la base de datos de Oracle. Podemos consultar el timeline y hacer publicaciones (útil para un sistema de notificaciones).

El código que se presenta a continuación está basado en lo que me topé en las siguientes ligas:

http://database-geek.com/2009/03/15/ora_tweet-tweet-from-oracle-a-plsql-twitter-api/

http://apextoday.blogspot.com/2008/06/getting-friends-timeline-from-twitter.html

 

CREATE OR REPLACE PACKAGE otn_sample_ttr_pkg IS

FUNCTION get_twitter_timeline(t_user IN VARCHAR2,   t_pass IN VARCHAR2)
RETURN XMLTYPE;
/*USAGE:

SELECT EXTRACTVALUE(VALUE(twitter), '/status/user/name')  AS NAME
, EXTRACTVALUE(VALUE(twitter), '/status/text') AS TEXT
, EXTRACTVALUE(VALUE(twitter), '/status/created_at') AS CREATED_AT
, EXTRACTVALUE(VALUE(twitter), '/status/source') AS SOURCE
, EXTRACTVALUE(VALUE(twitter), '/status/user/screen_name') AS SCREEN_NAME
, EXTRACTVALUE(VALUE(twitter), '/status/user/profile_image_url') AS PROFILE_IMAGE_URL
FROM
TABLE(XMLSEQUENCE(EXTRACT(otn_sample_ttr_pkg.get_twitter_timeline('twitter_user','twitter_password'), '/statuses/*'))) twitter

*/

FUNCTION tweet
(
p_user IN VARCHAR2,
p_pwd IN VARCHAR2,
p_string IN VARCHAR2 )
RETURN BOOLEAN;
/*
USAGE:

SET SERVEROUTPUT ON

BEGIN

IF otn_sample_ttr_pkg.tweet
(
p_user => 'twitter_username',
p_pwd => 'twitter_password',
p_string => 'ora_tweet v1.0 is complete!' )
THEN
dbms_output.put_line('Success!');
ELSE
dbms_output.put_line('Failure!');
END IF;

END;
/

*/

END otn_sample_ttr_pkg;

CREATE OR REPLACE PACKAGE BODY otn_sample_ttr_pkg AS

FUNCTION get_twitter_timeline(t_user IN VARCHAR2,   t_pass IN VARCHAR2)
RETURN XMLTYPE
IS
http_req utl_http.req;
http_resp utl_http.resp;
t_update_send VARCHAR2(200);
res_value VARCHAR2(4000);
XML_RETURN CLOB;
BEGIN

t_update_send := '–head';
Utl_Http.Set_Proxy ('http://128.1.56.56:80');

–utl_http.set_proxy('http://www-yourproxy.com:80'); –If you need to specify a proxy use this.
http_req := utl_http.begin_request('http://twitter.com/statuses/friends_timeline.xml',   'GET',   utl_http.http_version_1_1);
utl_http.set_authentication(http_req, 'cm\pryaurora', 'pryaurora','Basic',true);
utl_http.set_response_error_check(TRUE);
utl_http.set_detailed_excp_support(TRUE);

utl_http.set_body_charset(http_req,   'UTF-8');
utl_http.set_header(http_req,   'User-Agent',   'Mozilla/4.0');
utl_http.set_header(http_req,   'Content-Type',   'application/x-www-form-urlencoded');
utl_http.set_header(http_req,   'Content-Length',   to_char(LENGTH(t_update_send)));
utl_http.set_transfer_timeout(to_char('60'));
utl_http.set_authentication(http_req,   t_user,   t_pass,   'Basic');
utl_http.write_text(http_req,   t_update_send);
http_resp := utl_http.get_response(http_req);
BEGIN
WHILE 1 = 1
LOOP
utl_http.read_line(http_resp,   res_value,   TRUE);
XML_RETURN := XML_RETURN || res_value;
END LOOP;
EXCEPTION
WHEN utl_http.end_of_body THEN
NULL;
END;
utl_http.end_response(http_resp);
return XMLTYPE(XML_RETURN);
EXCEPTION
WHEN others THEN
XML_RETURN := sqlerrm;
RAISE;
END get_twitter_timeline;

FUNCTION tweet
(
p_user IN VARCHAR2,
p_pwd IN VARCHAR2,
p_string IN VARCHAR2 )
RETURN BOOLEAN
AS
v_req   UTL_HTTP.REQ;
v_resp  UTL_HTTP.RESP;
v_value VARCHAR2(1024);
v_status VARCHAR2(160);
v_call VARCHAR2(2000);
BEGIN

— Twitter update url
v_call := 'http://twitter.com/statuses/update.xml';

— encoded status tring
v_status := utl_url.escape(
url => 'status=' || SUBSTR(p_string,1,140));

— Has to be a POST for status update
Utl_Http.Set_Proxy ('http://128.1.56.56:80');

v_req := UTL_HTTP.BEGIN_REQUEST(
url => v_call,
method =>'POST');
utl_http.set_authentication(v_req, 'cm\pryaurora', 'pryaurora','Basic',true);

— Pretend we're a moz browser
UTL_HTTP.SET_HEADER(
r => v_req,
name => 'User-Agent',
value => 'Mozilla/4.0');

— Pretend we're coming from an html form
UTL_HTTP.SET_HEADER(
r => v_req,
name => 'Content-Type',
value => 'application/x-www-form-urlencoded');

— Set the length of the input
UTL_HTTP.SET_HEADER(
r => v_req,
name => 'Content-Length',
value => length(v_status));

— authenticate with twitter user/pass
UTL_HTTP.SET_AUTHENTICATION(
r => v_req,
username => p_user,
password => p_pwd );

— Send the update
UTL_HTTP.WRITE_TEXT(
r => v_req,
data => v_status );

— Get twitter's update
v_resp := UTL_HTTP.GET_RESPONSE(
r => v_req);

— Get the update and display it,
— only useful for debugging really
LOOP
UTL_HTTP.READ_LINE(
r => v_resp,
data => v_value,
remove_crlf => TRUE);

DBMS_OUTPUT.PUT_LINE(v_value);
END LOOP;

— Close out the http call
UTL_HTTP.END_RESPONSE(
r => v_resp);

RETURN TRUE;

EXCEPTION
— normal exception when reading the response
WHEN UTL_HTTP.END_OF_BODY THEN
UTL_HTTP.END_RESPONSE(
r => v_resp);
RETURN TRUE;

— Anything else and send false
WHEN OTHERS THEN
UTL_HTTP.END_RESPONSE(
r => v_resp);
Dbms_Output.Put_Line ( 'Request_Failed: ' ||
Utl_Http.Get_Detailed_Sqlerrm );
Dbms_Output.Put_Line ( 'Ora: ' || Sqlerrm );
RETURN FALSE;

END;

END otn_sample_ttr_pkg;

Escribir un Comentario mas...

Busca algo?

Escriba una palabra para buscar en el sitio:

Todavia no encontrando lo que usted esta buscando? Deje un comentario y entraremos en contacto con ud, para poderlo ayudar!

Visita a nuestros amigos!

Amigos recomendados...

Archivos

Entradas, ordenadas por mes...