Loop fácil em PL/SQL

18/janeiro/2012 - Oracle

Olá!

Dica rápida: Eu não conhecia a sintaxe do for abaixo, resolvi compartilhar. Não precisa declarar cursor nem dar open, fetch e close.

begin

— A variavel armazena cada linha retornada pelo select.
for variavel in ( select a.nome
from tab_cliente a
where a.idade >= 18) loop

— Faz alguma coisa com a variavel.
pro_teste(‘maior_idade’ , variavel.nome);

end loop;

end;

StickyGram

07/outubro/2011 - iPhone

Olá

Mais um novo serviço baseado no querido Instagram, é o StickyGram.
Este serviço imprime suas fotos publicadas no Instagram em imãs de 50mmx50mm por $14,99 a cartela com 9 e com frete grátis por airmail para todo o mundo.
O pagamento é via PayPal.

Eu já pedi um, vamos ver quanto tempo demora para chegar.

Até mais,
Roberto

Olá

Hoje me deparei com um erro diferente ao tentar conectar ao banco de dados Oracle numa aplicação Java.

Caused by: java.sql.SQLException: Io exception: NL Exception was generated

Depois de algumas analises verifiquei que a string de conexão estava errada:


jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(FAILOVER=on)(ADDRESS_LIST=(ADDRESS=(protocol=tcp)(host=198.31.10.51)(port=1521))(ADDRESS=(protocol=tcp)(host=198.31.10.50)(port=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=meu_banco))

No final da string faltou um fecha parênteses “)”.

Abaixo string que funciona sem problemas:


jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(FAILOVER=on)(ADDRESS_LIST=(ADDRESS=(protocol=tcp)(host=198.31.10.51)(port=1521))(ADDRESS=(protocol=tcp)(host=198.31.10.50)(port=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=meu_banco)))

portanto quando ocorrer esse erro verifique sua string nos mínimos detalhes.

Até mais,

Instagram

03/setembro/2011 - iPhone

Olá,

Deixarei aqui alguns sites muito úteis para usuários do Instagram.

 

 

Inkstagram – Site para visualizar fotos do Instagram, é possível dar likes, ver as fotos populares além de ver sua timeline de fotos;

Statigram -É um pouco mais completo que o anterior. Oferece estatísticas sobre suas fotos, os filtros mais usados, os dias da semana em que fotos são postadas. Possibilita enviar mensagens entre os usuários do Statigram;

Instaearth.me – Mostra as fotos no mapa;

Mapstagram – Outro site para ver as fotos no mapa;

Instac.at – agregador de fotos de gatos;

InstaPuppy – agregador de fotos de cachorros;

Instaport – Site para baixar todas suas fotos em um arquivo zip.

 

Até mais,

Roberto

Olá

Trabalhar com arquivos no Java7 ficou muito mais fácil com a introdução da classe java.nio.file.Files. Com esta classe copiar, mover, apagar e outras operações básicas ficaram muito simples.
A seguir veremos alguns exemplos:
O trecho abaixo obtém o sistemas de arquivos padrão acessível pela JVM.

 FileSystem defaultFS = FileSystems.getDefault();

Agora criamos um objeto da classe Path que representa o diretório D:\java

Path basePath = defaultFS.getPath("D:\\", "java"); 

Os objetos Path podem referenciar diretórios e arquivos.

Path temp1 = basePath.resolve("temp1"+
              File.separator + "meu_arquivo.txt");
			Path temp2 = basePath.resolve("temp2");

Usamos a classe Files para criar o diretório com o método estático createDirectories()

Files.createDirectories(temp2); 

Abaixo copiamos o arquivo para outro diretório substituindo caso exista.

Files.copy(temp1, temp2,
                StandardCopyOption.REPLACE_EXISTING ); 

Para move o arquivo para outro diretório substituindo caso exista usamos o código abaixo.

Files.move(temp1, temp3.resolve("fim.txt"),
                StandardCopyOption.REPLACE_EXISTING); 

Para saber se o arquivo existe

System.out.println("File exists " + Files.exists(temp1)); 

Mostramos o tamanho do arquivo em bytes

System.out.println(Files.size(temp2) + " bytes"); 

O código abaixo lista os diretórios raízes, no windows retornaria C:\, D:\, E:\ etc.

FileSystem defaultFS = FileSystems.getDefault();
		Iterable<Path> rootDirectories = defaultFS.getRootDirectories();

		for(Path pth : rootDirectories){
			System.out.println(pth.toString());
		}

Para mim a API foi bem escrita, é bem auto-explicativa.
Por enquanto minha ressalva é quanto as permissões no padrão POSIX, achei elas complicadas de serem aplicadas.

Antes de ter a classe Files para copiar um arquivo geralmente faríamos:

FileInputStream in =
                 new FileInputStream("D:\arquivo.txt");
            FileOutputStream out = new FileOutputStream("D:\destino.txt");
            byte[] buf = new byte[1024];
            int i = 0;
            while ((i = in.read(buf)) != -1) {
                out.write(buf, 0, i);
            }
            in.close();
            out.close(); 

No Java 7 não precisa dar close nos recursos que implementam java.lang.AutoCloseable. Assim você não corre mais riscos de esquece preso um recurso.

Até mais,
Roberto