Esse post mostra como colocar GRANT(permissão) para todo um SCHEMA em PL/SQL. O código abaixo cloca as permissões dentro do schema CONQUISTAR para o usuário RAFAEL.
DECLARE
CURSOR C1 IS select table_NAME from all_tables where owner like 'CONQUISTAR';
TABELA VARCHAR2(200);
CMDSQL VARCHAR2(1000);
BEGIN
OPEN C1;
LOOP
FETCH C1 INTO TABELA;
CMDSQL:='GRANT ALL ON CONQUISTAR.'||TABELA||' TO RAFAEL';
--DBMS_OUTPUT.PUT_LINE(CMDSQL);
EXECUTE IMMEDIATE CMDSQL;
EXIT WHEN C1%NOTFOUND;
END LOOP;
CLOSE C1;
END;
Aprenda Java com Exemplos Práticos
Esse blog se dedica a mostrar com exemplos práticos algumas soluções para problemas corriqueiros de ambiente de trabalho. Exemplos práticos para java e PL/SQL
domingo, 12 de junho de 2011
segunda-feira, 28 de fevereiro de 2011
Usando SPLIT em PLSQL
Nesse artigo pretendo mostrar como contornei um grande problema em plsql, a ausência da função SPLIT. Muito comum em varias linguagens como java ou php, a função SPLIT consiste em quebrar a String alvo em substrings com um separador. Segue exemplo de como funciona a função em java.
Segue a função que resolve o problema. Nela passamos a String que queremos separar, o caractere separador e a posição que queremos retornar.
/*
Função para retornar o segmento.
*/
create or replace function splitstr( nome varchar2
, separador varchar2
, posicao number
) return varchar2 is
begin
if posicao<=1 then
return substr(nome,0,instr(nome,separador)-1);
else
return splitstr(substr(nome,instr(nome,separador)+1),separador,posicao-1);
end if;
end splitstr;
Abaixo exemplo de chamada:
No exemplo acima exibimos o campo e em seguinda os subcampos 1,2 e 4.
Segue a função que resolve o problema. Nela passamos a String que queremos separar, o caractere separador e a posição que queremos retornar.
/*
Função para retornar o segmento.
*/
create or replace function splitstr( nome varchar2
, separador varchar2
, posicao number
) return varchar2 is
begin
if posicao<=1 then
return substr(nome,0,instr(nome,separador)-1);
else
return splitstr(substr(nome,instr(nome,separador)+1),separador,posicao-1);
end if;
end splitstr;
Abaixo exemplo de chamada:
No exemplo acima exibimos o campo e em seguinda os subcampos 1,2 e 4.
quarta-feira, 23 de fevereiro de 2011
Tansformando ResultSet em Array de Strings
Transformando ResultSet em Array de String
Nesse artigo pretendo mostrar na pratica como converter um objeto do tipo ResultSet para um Array de String. É uma função simples que pode ser útil usada junto com componente Swing como JTable. Segue os passos.
1. Declarar objetos header e body quer serão usados para armazenar de forma temporária os resultados.
2. Consultar as informações no banco de dados obtendo como retorno um objeto ResultSet.
3. Passar as informações do ResultSet para o Array de String.
4. Retornar para o método chamador o Array.
/*
* SITE :http://javaex.criarumblog.com
* AUTOR :Rafael Bezerra Cavalcante
* DATA : 20/02/2011
*
* Esse matérial pode ser copiado e distribuido a vontade.
*/
package banco;
import java.sql.*;
public class Oracle {
/*
* No Exemplo, segue os dados do banco:
* HOST : localhost
* PORTA : 1521
* BANCO : XE
*
* USUARIO :usuario
* SENHA :senhaDoBanco
*/
private Connection minhaConexao ;
private String host = "localhost" ;
private String porta = "1521" ;
private String sid = "XE" ;
private String usuario = "usuario" ;
private String senha = "senhaDoBanco" ;
private String header[] ;
private String body[][] ;
public boolean erro ;
public String erroMsg ;
public void conectar()throws ClassNotFoundException, SQLException{
Class.forName("oracle.jdbc.driver.OracleDriver");
minhaConexao =DriverManager.getConnection("jdbc:oracle:thin:@"+host+":"+porta+":"+sid,usuario,senha);
}
public void fechar() throws SQLException{
this.minhaConexao.close();
}
/*
Essa função faz a carga dos objeto da classe header e body.
*/
public void executeQueryVoid(String sql) throws ClassNotFoundException, SQLException{
this.erro=false;
this.erroMsg="";
this.conectar();
Statement st = this.minhaConexao.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = st.executeQuery(sql);
int j=0;
ResultSetMetaData metaData = rs.getMetaData();
int columns = metaData.getColumnCount();
rs.last();
int size = rs.getRow();
rs.beforeFirst();
this.header=new String[metaData.getColumnCount()];
this.body=new String[size][metaData.getColumnCount()];
while(rs.next()) {
for(int i=0;i
if(j==0)
this.header[i]=metaData.getColumnName(i+1);
int tipo=metaData.getColumnType(i+1);
System.out.println(tipo);
if(tipo==2)
this.body[j][i]=""+rs.getInt(i+1);
else
this.body[j][i]=rs.getString(i+1);
}
j++;
}
this.fechar();
}
/*
* Essa função serve para retornar o array do body.
*/
public String[][] executeQueryArray(String sql){
try{
this.executeQueryVoid(sql);
return this.body;
}catch(Exception e){
this.erro=true;
this.erroMsg=e.getMessage();
return null;
}
}
}
Nesse artigo pretendo mostrar na pratica como converter um objeto do tipo ResultSet para um Array de String. É uma função simples que pode ser útil usada junto com componente Swing como JTable. Segue os passos.
1. Declarar objetos header e body quer serão usados para armazenar de forma temporária os resultados.
2. Consultar as informações no banco de dados obtendo como retorno um objeto ResultSet.
3. Passar as informações do ResultSet para o Array de String.
4. Retornar para o método chamador o Array.
/*
* SITE :http://javaex.criarumblog.com
* AUTOR :Rafael Bezerra Cavalcante
* DATA : 20/02/2011
*
* Esse matérial pode ser copiado e distribuido a vontade.
*/
package banco;
import java.sql.*;
public class Oracle {
/*
* No Exemplo, segue os dados do banco:
* HOST : localhost
* PORTA : 1521
* BANCO : XE
*
* USUARIO :usuario
* SENHA :senhaDoBanco
*/
private Connection minhaConexao ;
private String host = "localhost" ;
private String porta = "1521" ;
private String sid = "XE" ;
private String usuario = "usuario" ;
private String senha = "senhaDoBanco" ;
private String header[] ;
private String body[][] ;
public boolean erro ;
public String erroMsg ;
public void conectar()throws ClassNotFoundException, SQLException{
Class.forName("oracle.jdbc.driver.OracleDriver");
minhaConexao =DriverManager.getConnection("jdbc:oracle:thin:@"+host+":"+porta+":"+sid,usuario,senha);
}
public void fechar() throws SQLException{
this.minhaConexao.close();
}
/*
Essa função faz a carga dos objeto da classe header e body.
*/
public void executeQueryVoid(String sql) throws ClassNotFoundException, SQLException{
this.erro=false;
this.erroMsg="";
this.conectar();
Statement st = this.minhaConexao.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = st.executeQuery(sql);
int j=0;
ResultSetMetaData metaData = rs.getMetaData();
int columns = metaData.getColumnCount();
rs.last();
int size = rs.getRow();
rs.beforeFirst();
this.header=new String[metaData.getColumnCount()];
this.body=new String[size][metaData.getColumnCount()];
while(rs.next()) {
for(int i=0;i
this.header[i]=metaData.getColumnName(i+1);
int tipo=metaData.getColumnType(i+1);
System.out.println(tipo);
if(tipo==2)
this.body[j][i]=""+rs.getInt(i+1);
else
this.body[j][i]=rs.getString(i+1);
}
j++;
}
this.fechar();
}
/*
* Essa função serve para retornar o array do body.
*/
public String[][] executeQueryArray(String sql){
try{
this.executeQueryVoid(sql);
return this.body;
}catch(Exception e){
this.erro=true;
this.erroMsg=e.getMessage();
return null;
}
}
}
terça-feira, 22 de fevereiro de 2011
Acessando Banco de Dados Oracle com JDBC
Nesse artigo pretendo mostrar na pratica como conectar banco Oracle com conexão JDBC padrão.
1. Driver do Banco de Dados: Antes de executar o programa deve ser instalado o driver do banco de dados correspondente. Para o Oracle o driver pode ser encontrado no site e deve ser baixado de acordo com a versão do banco utilizado. No banco do exemplo o arquivo é o ojdbc5.jar para o Oracle 12.
2. Codificação: Segue código exemplo de classe que acessa banco de dados. Nele uso basicamente duas funções executeQuery para executar consultas e executeUpdate para atualizações.
/*
* SITE :http://exjava.blogspot.com
* AUTOR :Rafael Bezerra Cavalcante
* DATA : 20/02/2011
*
* Esse matérial pode ser copiado e distribuido a vontade.
*/
package banco;
import java.sql.*;
public class Oracle {
/*
* No Exemplo, segue os dados do banco:
* HOST : localhost
* PORTA : 1521
* BANCO : XE
*
* USUARIO :usuario
* SENHA :senhaDoBanco
*/
private Connection minhaConexao ;
private String host = "localhost" ;
private String porta = "1521" ;
private String sid = "XE" ;
private String usuario = "usuario" ;
private String senha = "senhaDoBanco" ;
public void conectar()throws ClassNotFoundException, SQLException{
Class.forName("oracle.jdbc.driver.OracleDriver");
minhaConexao =DriverManager.getConnection("jdbc:oracle:thin:@"+host+":"+porta+":"+sid,usuario,senha);
}
public void fechar() throws SQLException{
this.minhaConexao.close();
}
/*
Método para consulta SELECT.
*/
public ResultSet executeQuery(String sql) throws SQLException, ClassNotFoundException{
this.conectar();
Statement stmt = this.minhaConexao.createStatement();
ResultSet rs = stmt.executeQuery(sql);
return rs;
}
/*
Método para INSERT, UPDATE e DELETE.
*/
public void executeUpdate(String sql) throws ClassNotFoundException, SQLException{
this.conectar();
Statement stmt = this.minhaConexao.createStatement();
stmt.executeUpdate(sql);
this.fechar();
}
}
* SITE :http://exjava.blogspot.com
* AUTOR :Rafael Bezerra Cavalcante
* DATA : 20/02/2011
*
* Esse matérial pode ser copiado e distribuido a vontade.
*/
package banco;
import java.sql.*;
public class Oracle {
/*
* No Exemplo, segue os dados do banco:
* HOST : localhost
* PORTA : 1521
* BANCO : XE
*
* USUARIO :usuario
* SENHA :senhaDoBanco
*/
private Connection minhaConexao ;
private String host = "localhost" ;
private String porta = "1521" ;
private String sid = "XE" ;
private String usuario = "usuario" ;
private String senha = "senhaDoBanco" ;
public void conectar()throws ClassNotFoundException, SQLException{
Class.forName("oracle.jdbc.driver.OracleDriver");
minhaConexao =DriverManager.getConnection("jdbc:oracle:thin:@"+host+":"+porta+":"+sid,usuario,senha);
}
public void fechar() throws SQLException{
this.minhaConexao.close();
}
/*
Método para consulta SELECT.
*/
public ResultSet executeQuery(String sql) throws SQLException, ClassNotFoundException{
this.conectar();
Statement stmt = this.minhaConexao.createStatement();
ResultSet rs = stmt.executeQuery(sql);
return rs;
}
/*
Método para INSERT, UPDATE e DELETE.
*/
public void executeUpdate(String sql) throws ClassNotFoundException, SQLException{
this.conectar();
Statement stmt = this.minhaConexao.createStatement();
stmt.executeUpdate(sql);
this.fechar();
}
}
Assinar:
Postagens (Atom)