terça-feira, 27 de abril de 2010

Comando FOR

The syntax for the FOR Loop is:


FOR loop_counter IN [REVERSE] lowest_number..highest_number
LOOP
   {.statements.}
END LOOP;

You would use a FOR Loop when you want to execute the loop body a fixed number of times.


Let's take a look at an example.
FOR Lcntr IN 1..20LOOP
   LCalc := Lcntr * 31;

END LOOP;

This example will loop 20 times. The counter will start at 1 and end at 20.



The FOR Loop can also loop in reverse. For example:

FOR Lcntr IN REVERSE 1..15
LOOP
   LCalc := Lcntr * 31;
END LOOP;

This example will loop 15 times. The counter will start at 15 and end at 1. (loops backwards)

Calendário da Agenda de Recolhimento

Eventualmente a instalação em alguns desktops não apresenta alguns dos calendários na tela de Agenda de Recolhimento, com isso faz-se necessário a instalação do objeto "Mscal.ocx", a instalação deve ser conforme abaixo:

SOLUÇÃO : Para solucionar o problema em questão, estamos encaminhando a ocx MSCAL.OCX para ser aplicada na base da solução Fiscal com as seguintes orientações:


Copiar essa ocx no diretório C:\WINNT\system32 e em seguida registra-la na opção Iniciar -> Executar e digitar o comando REGSVR32 C:\WINNT\system32\MSCAL.OCX.

Em Seguida deverá testar novamente o funcionamento da tela com problema no calendário.

segunda-feira, 26 de abril de 2010

Roteiro para geração de arquivo texto:





DECLARE


    arquivo_saida                    UTL_File.File_Type;


    Cursor Cur_Linhais select to_char(sysdate,'dd/mm/yyyy hh24:mi:ss "século" CC') DATA from dual;





BEGIN


     /*


       A    Append Text


       AB   Append Byte Mode


       R      Read Text


       RB   Read Byte Mode


       W      Write Text


       WB   Write Byte Mode


     */





   arquivo_saida := UTL_File.Fopen('/home/oracle/','alfa.txt', 'W');


   For Reg_Linha in Cur_linha Loop


       UTL_File.Put_Line(arquivo_saida, Reg_linha.Data);


    End Loop;


   UTL_File.Fclose(arquivo_saida);


    Dbms_Output.Put_Line('Arquivo gerado com sucesso.');


EXCEPTION


      WHEN UTL_FILE.INVALID_OPERATION THEN


               Dbms_Output.Put_Line('Operação
inválida no arquivo.'
);


              UTL_File.Fclose(arquivo_saida);


      WHEN UTL_FILE.WRITE_ERROR THEN


               Dbms_Output.Put_Line('Erro de
gravação no arquivo.'
);


              UTL_File.Fclose(arquivo_saida);


      WHEN UTL_FILE.INVALID_PATH THEN


               Dbms_Output.Put_Line('Diretório
inválido.'
);


              UTL_File.Fclose(arquivo_saida);


      WHEN UTL_FILE.INVALID_MODE THEN


               Dbms_Output.Put_Line('Modo de acesso
inválido.'
);


              UTL_File.Fclose(arquivo_saida);


      WHEN Others THEN


              Dbms_Output.Put_Line('Problemas na
geração do arquivo.'
);


              UTL_File.Fclose(arquivo_saida);


END;





Roteiro para leitura de arquivo texto:





DECLARE


    arquivo_ler                    UTL_File.File_Type;


    Linha                               Varchar2(100);


BEGIN


    arquivo_ler := UTL_File.Fopen('caminho completo’,’nm arquivo', 'r');


    Loop


       UTL_File.Get_Line(arquivo_ler, Linha);





    End Loop;





    UTL_File.Fclose(arquivo_ler);


    Dbms_Output.Put_Line('Arquivo processado com sucesso.');


EXCEPTION


   WHEN No_data_found THEN


               UTL_File.Fclose(arquivo_ler);


               Commit;


   WHEN
UTL_FILE.INVALID_PATH
THEN


               Dbms_Output.Put_Line('Diretório
inválido.'
);


              UTL_File.Fclose(arquivo_ler);


    WHEN Others THEN


               Dbms_Output.Put_Line
(
'Problemas na leitura
do arquivo.'
);


               UTL_File.Fclose(arquivo_ler);


END;