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