| ||
auteur : SheikYerbouti | ||
La variable SQL%ROWCOUNT contient le nombre de lignes impactées par le dernier ordre DML exécuté. Vous pouvez interroger cette variable après tout ordre INSERT, UPDATE ou DELETE
|
| ||
auteur : SheikYerbouti | ||
Les erreurs de compilation sont stockées dans la vue USER_ERRORS Vous pouvez, après compilation d'un objet, afficher les éventuelles erreurs de compilation de deux façons :
|
| ||
auteur : SheikYerbouti | ||
Comment compter le nombre d'occurrences dans une chaîne sans l'aide d'une boucle itérative ? En utilisant les fonctions LENGTH() et REPLACE() de la façon suivante :
|
| ||
auteur : SheikYerbouti | ||
En installant l'outil Oracle : Profiler Vous devez être connecté avec le privilège SYSDBA
Et en l'exécutant sur n'importe quelle fonction ou procédure PL/SQL :
|
| ||
auteur : Helyos | ||
Le package DBMS_LOB ne fournit pas de procédure ou fonction REPLACE pour les CLOBs. En voici une :
|
| ||
auteur : lalystar | ||
Plutôt que de coder une fonction qui traite tous les cas de figure correspondant aux différents formats
que peut prendre un nombre (entier, nombre à virgule, nombre avec exposant...),
il vaut mieux laisser Oracle gérer la conversion et nous signaler s'il a rencontré une erreur comme dans la fonction suivante :
Exemple d'utilisation : si la colonne X correspond à un nombre, on veut avoir ce nombre multiplié par 1000 :
|
| ||
auteur : lalystar | ||
Pour vérifier qu'une chaine de caractère vérifie un format donné, on peut utiliser, à partir d'Oracle 10g,
la fonction MATCH du OWA_PATTERN qui permet de manipuler des expressions régulières.
Cette fonction retourne un booléen indiquant si le format est vérifié ou pas; elle ne peut donc être appelée qu'en PL/SQL. Par exemple, pour vérifier que les numéros de téléphones en base suivent le format français sur 10 chiffres avec comme séparateur des tirets, on peut faire :
Les expressions régulières peuvent utiliser les symboles suivants :
|
| ||
auteur : lalystar | ||
Sous Oracle 8i, le moteur SQL utilisé dans les procédures PL/SQL est différent
et est en retard sur le moteur SQL utilisé pour les requêtes.
Certaines fonctionnalités disponibles en SQL ne le sont donc pas en PL/SQL comme :
|
| ||
auteur : lalystar | ||
Quand une procédure est en cours d'exécution, il est possible de générer un fichier de trace
(pour exploitation par TkProf par exemple) en utilisant la routine set_sql_trace_in_session du package DBMS_SYSTEM.
Les paramètres de cette routine sont les suivants :
|
| ||
auteur : lalystar | ||
Pour avoir immédiatement la documentation minimale d'un package Oracle installé, on peut utiliser la requête suivante sous SQL*Plus :
Par exemple, pour DBMS_OUTPUT :
|
| ||
auteur : SheikYerbouti | ||
Simplement grâce la fonction TO_NUMBER : En voici un exemple d'utilisation :
|
| ||
auteur : SheikYerbouti | ||
Grâce la fonction suivante :
En voici un exemple d'utilisation :
|
| |||
auteur : Xavier Vlieghe | |||
À partir d'Oracle 9i, vous pouvez utiliser le package DBMS_XMLQuery. En voici 2 exemples d'utilisation :
Et le tour est joué :
|
| ||
auteur : SheikYerbouti | ||
Si vous souhaitez exécuter un ordre du DDL (Data Description Language) pour créer une table, un index, altérer un objet existant,
utilisez l'instruction EXECUTE IMMEDIATE. Par exemple, pour forcer la recréation d'un index:
N'oubliez-pas que tout ordre du DDL génère un COMMIT implicite et que les droits nécessaires à l'exécution de l'instruction contenue dans la fonction EXECUTE IMMEDIATE
doivent avoir été donné directement à l'utilisateur, et non pas via un rôle.
| ||
lien : Voir le tutoriel sur le SQL Dynamique Natif |
| ||
auteur : Fred_D | ||
Les champs de type "Auto-Increment" n'existe pas en Oracle. Pour émuler ce comportement, vous avez besoin
Lorqu'une ligne sera insérée dans la table MaTable, la colonne macolonne_PK sera alors renseignée avec la valeur suivante de la séquence MaSequence. Il est également possible de se passer du trigger, et d'opter pour la syntaxe suivante :
Il est utile de noter que la séquence n'est donc pas liée à un champ ou une table, et que vous pouvez utiliser la même séquence pour plusieurs champs.
| ||
lien : Plus d'infos sur les triggers (ou déclencheurs) |
| ||||
auteur : Fred_D | ||||
Il peut être utile de rendre certains objets dynamiques, pour plus de souplesse dans vos applications.
Or, les vues sont souvent "créées en dur" dans la base, ce qui peut se réveler ennuyeux. Voici donc une méthode pour les rendre dynamiques : Créez d'abord un package, avec un paramètre global param1 :
Créez ensuite votre vue, en faisant appel à ce paramètre :
Pour utiliser votre vue, il faut d'abord initialiser le paramétre :
Et vous pouvez désormais faire appel à votre vue :
|
| ||||
auteur : Helyos | ||||
Cette méthode est valable jusqu'en version 9 : Pour exécuter une commande système depuis du PL/SQL nous allons utiliser une classe Java. La création d'un classe java exécutable en PL/SQL passe par trois étapes :
Ensuite on publie la spécification d'appel de cette classe en utilisant une procédure PL/SQL pour la "wrapper" :
Enfin, les permissions nécessaire doivent être données par l'utilisateur SYS pour que le JServer puisse accèder aux fichiers su système :
On doit se reconnecter pour activer les privilèges. Ensuite on lance notre commande
PS : ne pas oublier de lancer le script : $ORACLE_HOME\javavm\install\initjvm.sql En version 10g, vous pouvez utiliser le scheduler Oracle. |
| |||||
auteurs : Xavier Vlieghe, LeoAnderson | |||||
Il est parfois nécessaire, lors du déploiement de vos applicatifs, de crypter votre code afin de le protéger :
il suffit pour cela de sauvegarder votre code sous forme de fichiers sql et d'utiliser le programme wrap.exe,
se trouvant dans le répertoire {Oracle_Home}\Bin\. Le programme wrap accepte les 2 arguments suivants :
Encryptons-le :
Vous pouvez ouvrir le nouveau fichier pour vérifier son contenu. Attention, prenez évidemment soin de sauvegarder vos sources, cette procédure est bien entendu irréversible ! Vous pouvez (devez) également vérifier que la compilation s'effectue correctement :
Attention, ceci ne fonctionne pas sur les triggers ou les blocs PL/SQL anonymes, cf la documentation Oracle
|
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.