ResultSet especifico para Oracle

Caros amigos,

Preciso de saber quala sintaxe para criar um resultset especificamente para oracle.

sem mais um abraço

Acho que é isso que vc está procurando

[code]
import java.net.URL;
import java.sql.;
import oracle.jdbc.driver.
;
/**

  • Classe de teste de acesso a Banco de Dados atraves de JDBC utilizando
    um drive nativo.
    */
    class ConectaNAT {

    /**
    * Método de teste.
    */
    public static void main (String args[]) {

       String url   = "jdbc:oracle:thin:@<host name>:<porta>:<sid>";
                                    //Protocolo:Drive:LocalizacaoDoBD
     /* Na linha de comando acima, deve ser substituído as variaveis <host  name>, <porta> e <sid> pelas   configurações de seu servidor oracle */
    
    
       String query = "SELECT sysdate FROM dual"; // Query SQL
    
       try {
           Class.forName("oracle.jdbc.driver.OracleDriver");
                                                //Carrega o drive Nativo
    
           Connection con = DriverManager.getConnection(url, "teste",  "teste1");
           /* Sintaxe :DriverManager.getConnection(<caminho do host>, <usuario>,  <password>*/
           DatabaseMetaData dma = con.getMetaData ();
           System.out.println("\nConnected to " + dma.getURL());
           System.out.println("Driver       " + dma.getDriverName());
           System.out.println("Version      " + dma.getDriverVersion());
           System.out.println("");
    
           Statement stmt = con.createStatement ();
                                           // Abre a coneccao com o BD
    
           ResultSet rs = stmt.executeQuery (query);  // Executa a query  SQL
    
           //Imprime o resultado da query SQL
           while(rs.next()) {
               System.out.println(rs.getString(1));
           }
    
           rs.close();
           stmt.close();
           con.close();
    
       } catch (SQLException ex) {
    
           System.out.println ("\n*** SQLException caught ***\n");
           while (ex != null) {
               System.out.println ("SQLState: " + ex.getSQLState ());
               System.out.println ("Message:  " + ex.getMessage ());
               System.out.println ("Vendor:   " + ex.getErrorCode ());
               ex = ex.getNextException ();
               System.out.println ("");
           }
    
       } catch (java.lang.Exception ex) {
           ex.printStackTrace ();
       }
    

    }
    }[/code]

olá obrigado pela dica, mas não dá para chamar um stored procedure?

abraço

Claro utilize o CallableStatement

CallableStatement st = null;			
st = cn.prepareCall("{ call lsgdb003.lsgprc.s_lsg032_extrato (?)}");

// Define parâmetros de entrada
st.setString(1, cpf);
			
rs = st.executeQuery();

while (rs.next()) {
}

Ao que me parece, a resposta acima não funciona no Oracle (se estiver errado me desculpe, mas nunca usei dessa forma). Suponho que vc vai obter mais de uma coluna em seu select no Oracle, logo deve estar utilizando cursor. Se for o caso, vc vai ter de fazer algo assim:

[code]CallableStatement cst = connection.prepareCall("{ CALL SUA_PROCEDURE (?, ?)}");
cst.setString(1, cpf);

cst.registerOutParameter(2, OracleTypes.CURSOR); // 2.º parametro na procedure
cst.execute()

ResultSet rs = (ResultSet) cst.getObject(2);
[/code]
Vê se funciona, qq duvida posta novamente. Flw! :mrgreen:

Ja agora como defino a saida do cursor no Stored Procedure do Oracle?

abraço

Olá

Veja se esse exemplo ajuda.

[code]public class OracleFunction {

public static void main(String s[]) {
	try {
		//Makes a connection to database
		Connection con = null;
		Class.forName("oracle.jdbc.driver.OracleDriver");
		con = (Connection)DriverManager.getConnection("jdbc:oracle:thin:@IP:PORT:SID","USER","PASSWORD");

	  	//CallableStatement has to used to get back results from Oracle function
		CallableStatement cstmt = con.prepareCall("{? = call PACKAGE_NAME.FUNCTION_NAME }");

		//Set the Out Parameter type to be of type CURSOR
		cstmt.registerOutParameter(1, oracle.jdbc.driver.OracleTypes.CURSOR );

		cstmt.execute();

		//Cast the returned parameter, OracleTypes.CURSOR to a JDBC ResultSet
		ResultSet rs = (ResultSet)cstmt.getObject(1);
		while(rs.next()) {
			System.out.println(rs.getString(1));
		}
		rs.close();
		if(cstmt != null)cstmt.close();
		if(con != null) con.close();
	} catch (Exception e) {
		System.out.println(e.toString());
	}
}

}[/code]

Seguindo o que coloquei no último post, a procedure seria:

PROCEDURE SUA_PROCEDURE ( CPF IN VARCHAR2, CURSOR_RETORNO OUT SYS_REFCURSOR ) AS BEGIN OPEN CURSOR_RETORNO FOR SELECT * FROM TABELA WHERE ... END
É isso que vc quer saber? Se não for, posta aew de novo! Flw! :mrgreen: