ola galera!!
estou pegando um projeto em andamento,
aqui usamos procedures,
tudo depende do banco,
como faço pra usar essas procedures
alguem pode dar uma ajuda?
EDIT - o nome é “stored procedures” ou “procedimentos armazenados”.
ola galera!!
estou pegando um projeto em andamento,
aqui usamos procedures,
tudo depende do banco,
como faço pra usar essas procedures
alguem pode dar uma ajuda?
EDIT - o nome é “stored procedures” ou “procedimentos armazenados”.
Qual banco ?
Não se desespere, escreva de forma mais clara, tente ser mais abrangente no seu problema.
Segue exemplo para banco Oracle:
[code]CallableStatement ctsmt = conexao.prepareCall("{call manter_clientes_package.MBUSCA_CIDADE(?,?,?,?)}");
ctsmt.setString(1, “nome da cidade”);
ctsmt.registerOutParameter(2, Types.VARCHAR);
ctsmt.registerOutParameter(3, Types.VARCHAR);
ctsmt.registerOutParameter(4, Types.VARCHAR);
ctsmt.execute();[/code]
No exemplo acima é chamada uma procedure de banco Oracle situada dentro de uma package.
Dos 4 parâmetros, o primeiro é IN e os 3 últimos são OUT.
Para “pegar” o conteúdo dos 3 campos OUT use
ctsmt.getString(índice) onde índice vai de 2 a 4, nesse caso.
Para uma função com banco Oracle segue o exemplo:
[code]CallableStatement ctsmt = conn.prepareCall("{? = call manter_clientes_package.FEXISTE_CPF(?,?)}");
ctsmt.registerOutParameter(1, Types.VARCHAR);
ctsmt.setString(2, pCoCpf);
ctsmt.registerOutParameter(3, Types.VARCHAR);
ctsmt.execute();[/code]
Onde o primeiro “?” identifica o resultado da função, tipo OUT recuperado por ctsmt.getString(1)
Nesse caso a função possui dois parâmetros, o primeiro IN e o segundo OUT.
Verifique os tipos de dados dos parâmetros para poder usar o setters respectivos. Campos varchar2 utilize setString, campos number utilize setInt e assim por diante.
Meu banco é Oracle
obrigado pelas explicações,
estou incluindo um campo novo uma obs. em um cadartro,
fiz tudo que esplicaram,
quando vou salvar dá todas as mensagens de salvo com sucesso mas quando vou verificar ele não aparece lá,
não sei se falta fezer mais alguma coisa.
O Oracle, por padrão, requer que você use o comando COMMIT para que as alterações sejam efetivadas. (Você está usando o SQL*Plus ? )
Verifique se não faltou o comando conexao.commit().
São as procedures que salvam as informações no banco??
foi isto que fiz,
public String emp_ins_obs(Employee_Param eparam, String employee_obs) throws Exception {
CallableStatement cstmt = null;
LoginUsuarioForm user_name = new LoginUsuarioForm();
try{
conn = getConnection();
cstmt = conn.prepareCall("{ CALL PR_EMP_INS_OBS(?,?,?,?) }");
cstmt.setLong(1, eparam.getCompany_code());
cstmt.setLong(2, eparam.getEmployee_code());
cstmt.setString(3,employee_obs);
cstmt.setString(4,user_name.getUsuario());
//PARAMETRO DE SAIDA
cstmt.registerOutParameter(5,OracleTypes.VARCHAR); //Return Code
cstmt.registerOutParameter(6,OracleTypes.VARCHAR); //Company_Return
cstmt.registerOutParameter(7,OracleTypes.VARCHAR); //Employee_Return
//executar a procedure
cstmt.execute();
eparam.setEmployee_return_msg(cstmt.getString(9));
return cstmt.getString(2).substring(0,1);
}catch (Exception e){
throw new Exception("EmployeeDAOImpl - pr_emp_ins_obs: " + e.getMessage());
}finally{
closeConnection(conn);
closeCallableStatement(cstmt);
}
}
as procedures são feitas em PL
minha conexão é por um pool
Marlise, como é que é???
Aqui você tem 4 parâmetros de entrada certo?
cstmt = conn.prepareCall("{ CALL PR_EMP_INS_OBS(?,?,?,?) }");
Como é que você registra 3 parâmetros de saída com índices diferentes??
cstmt.registerOutParameter(5,OracleTypes.VARCHAR);
cstmt.registerOutParameter(6,OracleTypes.VARCHAR);
cstmt.registerOutParameter(7,OracleTypes.VARCHAR);
Esqueci de colocar um exemplo com IN/OUT…
Caso os parâmetros sejam IN/OUT então você deve registrar os mesmo parâmetros de entrada como sendo de saída e com o mesmo índice.
Se os parâmetros IN/OUT são os 2, 3 e 4 você deve registrar como OutParameter os índices 2, 3 e 4.
desculpe julianostr,
mas estou tentado aprender mas pelo que vi no meu projeto tá todo bixado eu não sei muita coisa mas estou corrend atras,
obrigado pela sua boa vontade
Que erro é este?
SEVERE: Error starting endpoint
java.io.IOException: Cannot recover key
at org.apache.tomcat.util.net.jsse.JSSE14SocketFactory.init(JSSE14SocketFactory.java:125)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:88)
at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(PoolTcpEndpoint.java:292)
at org.apache.tomcat.util.net.PoolTcpEndpoint.startEndpoint(PoolTcpEndpoint.java:312)
at org.apache.coyote.http11.Http11Protocol.start(Http11Protocol.java:182)
at org.apache.catalina.connector.Connector.start(Connector.java:1001)
at org.apache.catalina.core.StandardService.start(StandardService.java:459)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:683)
at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
04/05/2006 13:55:09 org.apache.catalina.startup.Catalina start
SEVERE: Catalina.start:
LifecycleException: Protocol handler start failed: java.io.IOException: Cannot recover key
at org.apache.catalina.connector.Connector.start(Connector.java:1003)
at org.apache.catalina.core.StandardService.start(StandardService.java:459)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:683)
at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
04/05/2006 13:55:09 org.apache.catalina.startup.Catalina start
INFO: Server startup in 6719 ms