[ Resolvido ] JavaDB Derby

8 respostas
ricardo_batista_alme

Estou desenvolvendo uma aplicação onde vai o derby embarcado,até aqui tudo bem.
Mais gostaria de saber como criar uma procedure no derby por exemplo :
A procedure tem os parametros faz um select na tabela e faz um registro.
mais ou menos assim:

create procedure sp_consultaaluno (IN codigo_aluno INT,IN idade INTEGER, IN nome_aluno varchar(30))

begin
select * from aluno where codigo=codigo_aluno
// se não existi faz o insert
insert into aluno(codigo,idade,nome) values (codigo_aluno,idade,nome_aluno)

end

mais da erro de sintaxe no begin
este é o erro

Erro de sintaxe: Encountered “begin” at line 11, column 1.
Elapsed Time: 0 hr, 0 min, 0 sec, 0 ms.

8 Respostas

romarcio

Aqui:
http://wiki.apache.org/db-derby/DerbySQLroutines
http://db.apache.org/derby/manuals/reference/sqlj27.html

ricardo_batista_alme

Já tinha este material e olhei mais não esclareci a minha duvida.
O que gostaria de saber é se no derby a procedure funciona como nos outros bancos, se não funciona igual como faço pra criar procedure ?

romarcio

ricardo batista almeida:
Já tinha este material e olhei mais não esclareci a minha duvida.
O que gostaria de saber é se no derby a procedure funciona como nos outros bancos, se não funciona igual como faço pra criar procedure ?

Cada banco de dados tem suas diferenças em certos aspectos. Acho que em Procedures isso pode acontecer, como acontece com Triggers.

Mas nesse material que te passei nos links mostra como criar uma procedure, é só comparar com a procedure que você usa em seu banco de dados atual.

CREATE PROCEDURE DRS2(DP1 INTEGER, DP2 INTEGER) PARAMETER STYLE JAVA LANGUAGE JAVA READS SQL DATA DYNAMIC RESULT SETS 2 EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows'

ricardo_batista_alme

Eu entendi mais onde entra o que a minha procedure vai fazer

romarcio
ricardo batista almeida:
Eu entendi mais onde entra o que a minha procedure vai fazer
Pelo que entendi em um método Java. Esse trecho:
EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows'
selectRows é o método que contém o select
public static void selectRows(int p1, int p2, ResultSet[] data1,
ResultSet[] data2) throws SQLException {

  Connection conn = DriverManager.getConnection("jdbc:default:connection");
  PreparedStatement ps1 = conn.prepareStatement("select * from t1 where i = ?");
  ps1.setInt(1, p1);
  data1[0] = ps1.executeQuery();

  PreparedStatement ps2 = conn.prepareStatement("select * from t1 where i >= ?");
  ps2.setInt(1, p2);
  data2[0] = ps2.executeQuery();

  conn.close();
}
ricardo_batista_alme

Então não tem procedure como os outros bancos ,como o sqlserver por exemplo.
A sintaxe é diferente.
Mais como eu uso o begin na procedure do derby ?

romarcio

ricardo batista almeida:
Então não tem procedure como os outros bancos ,como o sqlserver por exemplo.
A sintaxe é diferente.
Mais como eu uso o begin na procedure do derby ?

Não consegui encontrar nada da forma como você está procurando. Talvez essa forma do exemplo seja o único meio de fazer.

ricardo_batista_alme

Não achei nada parecido .
Entendi como funciona, a criação da procedure no derby somente é declarado os parametros, ai no nome externo eu declaro o metodo e no metodo eu uso os parametros para fazer consulta insert etc.

Criado 6 de dezembro de 2011
Ultima resposta 8 de dez. de 2011
Respostas 8
Participantes 2