Archive for category Oracle

[ORACLE] Expressão Regular – Data

Uma dica de expressão regular. Uma forma de achar uma data em meio a um mundo de informações agregadas é utilizando expressão regular através do comando REGEXP_SUBSTR, veja abaixo:


1
SELECT REGEXP_SUBSTR('STRINGSTRING25/10/2009STRINGSTRING','([123]0|[012][1-9]|31)/(0[1-9]|1[012])/(19[0-9]{2}|2[0-9]{3})') data_reg FROM DUAL;

, , , ,

Nenhum comentário.

[ORACLE] Crie sua própria exceção com base no código do erro

Aqui uma dica para fazer suas exceções com base no código do erro. Sabemos que existem tratamentos pré-definidos, como abaixo:

Leia o resto desse post »

, , , , ,

Nenhum comentário.

[ORACLE] Nome, IP e usuário da rede

Um dica bem simples que peguei no Oracle Blog, é uma consulta para retornar o nome da máquina, IP e usuário da rede, veja abaixo:


1
2
3
SELECT SYS_CONTEXT('USERENV', 'TERMINAL') MICRO,
       SYS_CONTEXT('USERENV', 'IP_ADDRESS') IP,
       SYS_CONTEXT('USERENV', 'OS_USER') USUARIO_REDE FROM DUAL;

, , , ,

Nenhum comentário.

[ORACLE] Dimension? Increment? Teste isso!

Teste isso mas tente descobrir antes pra que serve. Comente.

1
2
3
4
5
SELECT INTEGER_VALUE
FROM   DUAL
WHERE  1=2 MODEL  DIMENSION BY ( 0 AS KEY )
  MEASURES     ( 0 AS INTEGER_VALUE )
  RULES UPSERT ( INTEGER_VALUE[ FOR KEY FROM 1 TO 10 INCREMENT 1 ] = CV(KEY));



, , ,

2 Comentários

[ORACLE] Retorne no formato XML

Veja um exemplo para ter um retorno XML de suas consultas. Aqui fiz um exemplo para três nós com repetição do nó 2 conforme o número de reigistros que o banco retornar. É bem simples, veja abaixo. A questão toda está somente em um campo de retorno (após o “select”).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT '<?xml version="1.0"?>'||
	XMLELEMENT("NÓ_1",
		XMLAGG(
			XMLELEMENT("NÓ_2",
				XMLELEMENT("INFO_1",DADOS_TABELA_CAMPO1),
		        XMLELEMENT("INFO_2",DADOS_TABELA_CAMPO2),
		        XMLELEMENT("INFO_3",DADOS_TABELA_CAMPO3),
		        XMLELEMENT("INFO_4",DADOS_TABELA_CAMPO4)
		  	)
		)
	) XML
FROM TABELA
WHERE RELACIONAMENTOS
GROUP BY AGRUPAMENTOS NECESSÁRIOS;



, ,

Nenhum comentário.

[ORACLE] Agrupando e somando com um título

Para conseguirmos criar de uma maneira bem rápida uma somatoria com base em um group by (numérico) e ainda exibindo uma string informativa (total) sem precisar criar union ou qualquer outro recurso mais complexo, basta usarmos os comandos CASE GROUPING no retorno e ROLLUP no agrupamento. O CASE GROUPING verifica a necessidade de inserir o conteúdo do campo ou um valor string conforme as condições (= 1 quando chegar no “registro” somatório) e o ROLLUP usado junto com o GROUP BY calcula o total em si.

Veja exemplo:

1
2
3
4
5
6
7
SELECT CASE GROUPING (CAMPO_AGRUPADOR)
		WHEN 1 THEN 'TOTAL_GERAL'
		ELSE CAMPO_AGRUPADOR
      END AS CATEGORIA,
	COUNT(CAMPO_SOMADO) AS SUB_TOTAL
FROM TABELA
GROUP BY ROLLUP(CAMPO_AGRUPADOR);

, , , , ,

Nenhum comentário.

[ORACLE] Uma dica rápida para mailling

Uma dica bem rápida para criar uma lista de e-mails concatenada em uma linha só utilizando as funções CONCATENATE e CONCAT.

Suponhamos ter a tabela PESSOAS na seguinte estrutura:

PESSOAS
-CAMPO_NOME_DEST VARCHAR2(100)
-CAMPO_EMAIL_DEST VARCHAR2(100)

Nossa consulta ficará assim:

1
2
3
SELECT CONCATENATE(UPPER(NVL(CAMPO_NOME_DEST,SUBSTR(CAMPO_EMAIL_DEST,1,INSTR(CAMPO_EMAIL_DEST,'@')-1)))||' <'||CONCAT(LOWER(CAMPO_EMAIL_DEST),'>; ')) MAILLING
			FROM PESSOAS
			WHERE CAMPO_EMAIL_DEST IS NOT NULL;

Importante: O retorno é limitado no buffer, dessa forma, fazendo em PL/SQL, faça o que for preciso com a string de retorno em seguida limpe a variável antes de chegar em seu limite.


, , , ,

Nenhum comentário.

[ORACLE] Documentação 6i

Para quem ainda usa o Forms/Reports 6i independente da versão do banco), disponibilizo rapidamente a documentação da versão. Tudo num pacote só, estão 4 PDFs para trabalhar com Reports, desde uma rápida referência até trabalhos complexos com gráficos. Há também 2 PDFs para trabalhar com Forms, um é a documentação original, o outro é bem interessante, explica como fazer a migração do Forms 6i para o 10g, que possui suporte para aplicações em ambiente web.

Faça download aqui.



, ,

Nenhum comentário.

[JAVA] Conexão com Oracle

Abaixo um exemplo simples para conexão Oracle em JAVA utilizando a biblioteca ojdbc14.jar (abaixo para download)

A estrutura dos arquivos estão da seguinte forma:

|Principal.java
|Ora (dir)
|-ConnectionMaker.java
|-lib (dir)
|–ojdbc14.jar

Através da classe Principal abaixo, importamos a classe Connection da bibliteca Java para fazer a instanciação de um objeto Connection e dar início a conexão Oracle. Importamos também, na linha 2, a classe em si que garante a conexão com o banco.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.sql.Connection;
import ora.ConnectionMaker;
 
public class Principal{
 
	public static void main(String args[]){
		try {
			ConnectionMaker conn = new ConnectionMaker();
			Connection con1 = conn.getInstance("user", "password", "banco", "host");
			//String user, String password, String sid, String url
 
			System.out.println("Conectou!");
			con1.close();
			System.out.println("");
			System.out.println("Fechou conexão!");
		} catch(Exception ex) {
			ex.printStackTrace();
		}
 
	}
}

Confira abaixo como fica a classe ConnectionMaker para concretizar a conexão (atenção com a package, veja mais aqui). Veja a linha 5, aqui importamos a biblioteca ojdbc14.jar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package ora;
 
import java.sql.Connection;
import java.sql.DriverManager;
import oracle.jdbc.driver.OracleDriver;
 
public class ConnectionMaker
{
	public static Connection getInstance(String user, String password, String sid, String url) throws Exception
    {
        DriverManager.registerDriver(new OracleDriver());
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@" + url + ":1521:" + sid, user, password);
        conn.setAutoCommit(false);
 
        return conn;
    }
 
	public static Connection getInstance(String user, String password, String sid) throws Exception
	{
		return getInstance(user, password, sid, "localhost");
	}
}

Para que seu programa funciona com sucesso, defina a váriavel de ambiente CLASSPATH de nossa biblioteca ojdbc14.jar. Vai ficar mais ou menos assim, dependendo onde descompactou os arquivos:

set classpath=D:\caminho\subdir\subdir\subdir\ojdbc14.jar;

Cuidado para não substituir a CLASSPATH existente, insira o já existente na mesma linha separando por ponto e vírgua (;).

Faça download da biblioteca de conexão Oracle incluindo exemplos.

Participação de Luiz Claudio – Londrina/PR que me indicou a classe ConnectionMaker e a biblioteca ojdbc14.jar.


, , ,

3 Comentários

[ORACLE] Sugestão de softwares

Gostaria de apresentar três softwares que utilizo muito para manipulação de dados e administração do banco Oracle. Todos são bem completos e trabalham perfeitamente. Possuem suas versões free e não deixam nada a desejar. Podemos conferir pelas screenshots. Somente o PL/SQL Developer possui seu tempo de uso antes que solicitem que adquira o software.

Benthic Golden
download aqui

Toad for Oracle
download aqui

PL/SQL Developes
download aqui

, , ,

Nenhum comentário.