23 mai 2018

Annuler des opérations DML sur une vue avec un trigger et le mot clé NULL

  IntroductionNous allons voir dans cet article comment annuler au niveau d'une vue certaines opérations DML et ce sans avoir à annuler les droits sur la table sous-jacente. En effet, si Oracle liste dans son dictionnaire de données qui a reçu tel droit, via quel user, sur quel objet etc etc, en revanche il ne mémorise pas les REVOKEs! Et donc si on révoque les droits DML sur une vue ou table, il sera impossible de revenir en arrière à moins de développer des programmes pour justement enregistrer les REVOKEs, mais j'estime que... [Lire la suite]
Posté par David DBA à 14:03 - - Permalien [#]
Tags :

19 mai 2018

Afficher l'ordre SQL d'une vue de façon récursive : DBMS_UTILITY.expand_sql_text

IntroductionUne vue est un objet tout simple d'Oracle, c'est juste un SELECT sur une ou plusieurs tables ou même sur d'autres vues. Mais un SELECT peut vite devenir très complexe et c'est justement pour masquer cette complexité qu'on crée des vues.Néanmoins, dans certains cas, nous voulons savoir quelle est la définition précise d'une vue, donc de façon récursive, c'est à dire afficher la définition des tables et vues sous-jacentes à cette vue et ce sur tous les niveaux. Prenons par exemple la vue V1 qui est un SELECT sur la table T1... [Lire la suite]
Posté par David DBA à 12:56 - - Permalien [#]
Tags :
08 mai 2018

CURSOR Expression : exécuter dans la clause SELECT un SELECT imbriqué avec N colonnes et M lignes

IntroductionIl est possible dans la partie SELECT d'un SELECT d'utiliser une sous-requête, qu'on appelle SELECT imbriqué, mais celle-ci doit obligatoirement retourner une seule valeur et une seule ligne. A noter que cette limitation n'existe pas pour les sous-requêtes dans les FROM et WHERE. Cette limite peut devenir très gênante, par exemple pour une relation entre deux tables trop complexe à écrire sous forme de jointure. Pour répondre à ce besoin, Oracle a inventé le CURSOR expression.   Points d'attentionNA.   ... [Lire la suite]
Posté par David DBA à 22:00 - - Permalien [#]
Tags :