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!

Share

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);
Share

Olá!

A seguir uma função para converter string com símbolos em formato HTML entities em texto normal.

Exemplo, queremos converter:

&lt;![CDATA[&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;

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;
Share

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.

Continue lendo o artigo »

Share

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  😉

 

 

Share