Como medir tempo de processamento em PL/SQL
25/janeiro/2018 - Oracle
Olá,
Nem sempre temos as ferramentas adequadas para identificar gargalos de processamento em uma procedure PL/SQL. As vezes só temos um SQLPlus e um editor de texto disponível, que pode ser um Notepad++ ou VI 🙁
Então se um dia precisar medir o tempo que um trecho de código gasta para processar, a alternativa é usar o código abaixo, onde coletamos o timestamp inicial e subtraímos com o final.
declare timestamp1 timestamp; timestamp2 timestamp; con number := 0; begin timestamp1 := systimestamp; -- /* procedure ou trecho de código que deseja medir for cont in 0 .. 9999999 loop dbms_output.put_line('>>>> ' || cont || ' <<<< '); end loop; */ -- timestamp2 := systimestamp; if extract(second from (timestamp2 - timestamp1)) > 30 then dbms_output.put_line('Demorou mais de 30 segundos'); else dbms_output.put_line('Demorou menos 30 segundos'); end if; end;
Bons códigos!
Problema com acentuação de email usando UTL_SMTP
07/janeiro/2015 - Oracle
Boa noite,
Se ao enviar um email usando o comando do Oracle UTL_SMTP, o assunto do email está chegando aos destinatários sem respeitar a acentuação, insira o comando abaixo para informar ao cliente de email usar a codificação ISO-8859-1.
UTL_SMTP.WRITE_DATA( w_conn, 'Subject: ' || '=?iso-8859-1?Q?' || UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.QUOTED_PRINTABLE_ENCODE(UTL_RAW.CAST_TO_RAW(i_subj))) || '?=' || UTL_TCP.CRLF);
Função PLSQL para converter símbolos HTML (entities)
06/fevereiro/2014 - Oracle
Olá!
A seguir uma função para converter string com símbolos em formato HTML entities em texto normal.
Exemplo, queremos converter:
<![CDATA[<?xml version="1.0" encoding="UTF-8"
Para:
<![CDATA[<?xml version="1.0" encoding="UTF-8"
CREATE OR REPLACE FUNCTION fun_converte_html_xml( i_string IN VARCHAR2 ) RETURN VARCHAR2 IS BEGIN RETURN DBMS_XMLGEN.convert( i_string, DBMS_XMLGEN.ENTITY_DECODE ); END;
Acesso HTTP PL/SQL
13/setembro/2013 - Oracle
Olá
O script abaixo é um exemplo simples de como fazer um acesso HTTP (GET) em PL/SQL. Testado no Oracle 9i e Oracle 10g.
Quantidade de linhas afetadas por um comando DML
13/março/2013 - Oracle
Olá
Para saber dentro de uma procedure quantas linhas um select retornou ou um update atualizou use o sql%rowcount
Exemplo com select:
declare -- Local variables here i integer; begin Select coluna1, coluna2 From tabela where coluna3 > 1; dbms_output.put_line('Linhas retornadas '|| sql%rowcount); exception when no_data_found then dbms_output.put_line('Nenhuma linha encontrada'); end;
Exemplo com update:
declare -- Local variables here begin update tab_param t set t.vlr_par = 'S' where t.num_par = 1; dbms_output.put_line('Qtd linhas atualizadas: ' || sql%rowcount); end;
Funciona para delete também 😉