0% ont trouvé ce document utile (0 vote)
19 vues4 pages

Java Dans PL

Le document décrit l'intégration de Java dans PL/SQL pour étendre les fonctionnalités d'Oracle, en utilisant des outils comme loadjava et dropjava. Il aborde la création de fonctions PL/SQL appelant du code Java, la gestion des privilèges et le mappage des types de données entre PL/SQL et Java. Des exemples pratiques illustrent l'utilisation de collections PL/SQL avec des classes Java pour le traitement de données.

Transféré par

faticharroud321
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
19 vues4 pages

Java Dans PL

Le document décrit l'intégration de Java dans PL/SQL pour étendre les fonctionnalités d'Oracle, en utilisant des outils comme loadjava et dropjava. Il aborde la création de fonctions PL/SQL appelant du code Java, la gestion des privilèges et le mappage des types de données entre PL/SQL et Java. Des exemples pratiques illustrent l'utilisation de collections PL/SQL avec des classes Java pour le traitement de données.

Transféré par

faticharroud321
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Java dans PL/SQL : Points Clés

1. Objectif
- Intégrer des fonctionnalités Java dans Oracle.
- Exécuter du code Java côté serveur.
- Étendre les capacités de PL/SQL avec des bibliothèques Java.

2. Outils
- loadjava : Charge des classes Java dans la base Oracle.
- dropjava : Supprime des classes Java de la base.
- DBMS_JAVA : Package PL/SQL pour gérer Java dans Oracle.

3. Définition des Privilèges


- Grant JAVAUSERPRIV : Permet d'exécuter du code Java.
- Grant JAVASYSPRIV : Accès aux opérations système (risqué).
- Exemple :
```sql
GRANT JAVAUSERPRIV TO nom_utilisateur;
```

4. Création des Enveloppes PL/SQL


- Fonctions/Procédures PL/SQL appelant du code Java :
```sql
CREATE OR REPLACE FUNCTION nom_fonction RETURN TYPE AS LANGUAGE JAVA NAME
'[Link]() return Type';
```

5. Types de Données Composés


- Objets SQL (Oracle Objects) : Correspondent à des classes Java.
- Collections (VARRAY, TABLE) : Peuvent être mappées avec des tableaux Java.
- SQLJ : Permet un mapping avancé entre SQL et Java.

Choses Importantes à Retenir


- **Performances** : L'appel Java depuis PL/SQL a un coût (privilégier PL/SQL pur si
possible).
- **Sécurité** : Restreindre les privilèges (éviter `JAVASYSPRIV` sauf nécessité).
- **Gestion des erreurs** : Capturer les exceptions Java via PL/SQL (`SQLException`).
- **Portabilité** : Le code Java doit être compatible avec l'environnement Oracle.

**→ Utilisation typique** : Accès à des API externes, traitement complexe, calculs intensifs.

Exemple : Mappage entre Collections PL/SQL (VARRAY, TABLE) et


Tableaux Java

1. Déclaration des Types en PL/SQL

sql
Copy
-- VARRAY (taille fixe)
CREATE TYPE NomVarrayType AS VARRAY(10) OF VARCHAR2(100);
/
-- TABLE (taille dynamique)
CREATE TYPE NomTableType AS TABLE OF NUMBER;
/

2. Classe Java pour Manipuler les Collections

java
Copy
import [Link].*;
import [Link];
import [Link];
import [Link];

public class CollectionHandler {


// Méthode pour traiter un VARRAY (exemple : concaténation)
public static String processVarray(ARRAY varray) throws SQLException {
String[] elements = (String[]) [Link]();
return [Link](", ", elements);
}

// Méthode pour traiter une TABLE (exemple : somme des éléments)


public static double sumTable(ARRAY table) throws SQLException {
BigDecimal[] numbers = (BigDecimal[]) [Link]();
double sum = 0;
for (BigDecimal num : numbers) {
sum += [Link]();
}
return sum;
}
}

3. Enveloppe PL/SQL pour Appeler Java

sql
Copy
-- Pour VARRAY
CREATE OR REPLACE FUNCTION process_plsql_varray(p_array NomVarrayType)
RETURN VARCHAR2 AS LANGUAGE JAVA
NAME '[Link]([Link]) return String';
/

-- Pour TABLE
CREATE OR REPLACE FUNCTION sum_plsql_table(p_table NomTableType)
RETURN NUMBER AS LANGUAGE JAVA
NAME '[Link]([Link]) return double';
/

4. Utilisation depuis PL/SQL

sql
Copy
DECLARE
v_varray NomVarrayType := NomVarrayType('A', 'B', 'C');
v_table NomTableType := NomTableType(10, 20, 30);
v_result_string VARCHAR2(500);
v_result_number NUMBER;
BEGIN
-- Appel Java pour VARRAY
v_result_string := process_plsql_varray(v_varray);
DBMS_OUTPUT.PUT_LINE('VARRAY traité : ' || v_result_string);

-- Appel Java pour TABLE


v_result_number := sum_plsql_table(v_table);
DBMS_OUTPUT.PUT_LINE('Somme de la TABLE : ' || v_result_number);
END;
/

Résultat Attendu

Copy
VARRAY traité : A, B, C
Somme de la TABLE : 60

Points Clés

• Conversion Implicite : Oracle convertit


automatiquement VARRAY/TABLE en [Link].
• Type Java :
o Pour VARRAY OF VARCHAR2 → String[] en Java.
o Pour TABLE OF NUMBER → BigDecimal[] (ou double[] selon le besoin).
• Gestion des Exceptions : Toujours capturer SQLException en Java.

→ Cas d'Usage : Traitement de listes complexes (ex. calculs statistiques, transformations de


données).

Vous aimerez peut-être aussi