Olá ,
Estou trabalhando em um projeto q utiliza stored procedures no Oracle.
Alguém sabe como fazer teste de integração com uma "stored procedure" no H2 ?
grato
Olá ,
Estou trabalhando em um projeto q utiliza stored procedures no Oracle.
Alguém sabe como fazer teste de integração com uma "stored procedure" no H2 ?
grato
Olá
Segue abaixo um exemplo de teste de integração em Java que executa uma stored procedure no H2 e verifica se o resultado é o esperado:
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
public class StoredProcTest {
private static Connection conn;
@BeforeClass
public static void setUp() throws Exception {
// Inicia o servidor H2 em memória
org.h2.tools.Server.createTcpServer("-tcpAllowOthers").start();
// Conecta ao banco de dados H2
Class.forName("org.h2.Driver");
conn = DriverManager.getConnection("jdbc:h2:mem:testdb", "sa", "");
// Cria a estrutura de banco de dados e a stored procedure no H2
createDatabaseSchema();
}
@Test
public void testStoredProc() throws SQLException {
// Executa a stored procedure no H2
CallableStatement cs = conn.prepareCall("{call my_stored_proc(?, ?)}");
cs.setInt(1, 1);
cs.registerOutParameter(2, java.sql.Types.INTEGER);
cs.execute();
int result = cs.getInt(2);
// Verifica se o resultado é o esperado
Assert.assertEquals(2, result);
}
private static void createDatabaseSchema() throws SQLException {
conn.createStatement().execute("CREATE TABLE my_table (id INT, name VARCHAR(255))");
conn.createStatement().execute("INSERT INTO my_table VALUES (1, 'foo')");
conn.createStatement().execute("CREATE PROCEDURE my_stored_proc(IN id INT, OUT result INT) "
+ "READS SQL DATA BEGIN SELECT id INTO result FROM my_table WHERE id = id; END;");
}
}
Este exemplo usa o driver JDBC do H2 para conectar ao banco de dados em memória e criar a estrutura de banco de dados e a stored procedure. Em seguida, o teste de integração executa a stored procedure usando uma chamada de procedimento armazenado e verifica se o resultado é o esperado usando a asserção assertEquals() do JUnit.
Olá !
Infelizmente externou erro de sintaxe no "create procedure".
verifiquei que o H2 não possui o comando "create procedure" ao invés, ele possui "create alias" para criar pseudo-funções.
http://www.h2database.com/html/features.html#user_defined_functions
vc consegue rodar este exemplo em seu pc?