L’interface CallableStatement | JDBC – Java

L’interface CallableStatement est utilisée pour appeler des procédures stockées et des fonctions.

Nous pouvons avoir une logique métier sur la base de données en utilisant des procédures et des fonctions stockées qui amélioreront les performances car elles sont pré-compilées.

Supposons que vous ayez besoin d’obtenir l’id de l’utilisateur en fonction du username, vous pouvez créer une fonction qui reçoit le username comme entrée et renvoie l’id de l’utilisateur comme sortie.
 
 

Différence entre les procédures stockées et les fonctions:
Procédure stockée
Fonction
Est utilisé pour exécuter la logique métier. Est utilisé pour effectuer le calcul.
Ne doit pas avoir le type de retour. Doit avoir le type de retour.
Peut retourner 0 ou plusieurs valeurs. Ne peut renvoyer qu’une seule valeur.
Nous pouvons appeler des fonctions à partir d’une procédure. La procédure ne peut pas être appelée à partir d’une fonction.
Procédure prend en charge les paramètres d’entrée et de sortie (IN et OUT). Fonction ne prend en charge que le paramètre d’entrée (IN).
La gestion des exceptions à l’aide du bloc try/catch peut être utilisée dans des procédures stockées. La gestion des exceptions à l’aide de try/catch ne peut pas être utilisée dans des fonctions définies par l’utilisateur.

 

Comment obtenir une instance de CallableStatement?

La méthode prepareCall() de l’interface Connection renvoie l’instance de CallableStatement.
 

Exemple:

Pour appeler une procédure stockée, vous devez la créer dans la base de données. Ici, nous supposons que la procédure stockée ressemble à ceci.

CREATE OR REPLACE PROCEDURE "AddEmp"(id IN NUMBER, nom IN VARCHAR2)
IS
BEGIN
	INSERT INTO emp VALUES(id, nom);
END;
/

Dans cet exemple, nous allons appeler la procédure stockée ‘AddEmp’ qui reçoit l’id et le nom de l’employé comme paramètre et l’insère dans la table ’emp’. Notez que vous devez également créer la table ’emp’ pour exécuter cette application.
 
 

import java.sql.*;

public class Main 
{
	public static void main(String[] args) throws Exception
	{
		//charger la classe driver
		Class.forName("oracle.jdbc.driver.OracleDriver");
		//créer l'objet de connexion
		Connection con = DriverManager.getConnection(
		"jdbc:oracle:thin:@localhost:1521:xe","system","oracle");

		//appeler la procédure stockée AddEmp
		CallableStatement stmt = con.prepareCall("{call AddEmp(?,?)}");
		//définir les valeurs
		stmt.setInt(1, 101);
		stmt.setString(2, "Alex");
		stmt.execute();

		System.out.println("L'employé inséré avec succés");
	}
}

Vérifiez maintenant la table dans la base de données, la valeur est insérée dans la table ’emp’.
 
QCM Java - JDBC

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *