|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||||
|
Invité régulier
![]() Inscription : septembre 2006 Messages : 15 ![]() |
Bonjours
J'ai la table Code :
Dans un 1er temps, Quand je fais Code 1 Code :
Quand je fais Code 2 Code :
Mais que je met ce code dans une procédure stocké d'un package Code :
Code :
Code :
01031. 00000 - "insufficient privileges"
Ce que je ne comprend pas c'est pourquoi. Car j'arrive très bien a créer un trigger sur cette table que ce soit avec le code 1 ou le code 2; Mais dès que je veux passé par une procédure stocké, ça ne marche plus, et ne je vois pas pourquoi le problème viendrais des droits Car ce sont tous des objets d'un même schéma (MON schéma) Quelqu'un peut-il me dire où est la faute? |
||||||||||
|
|
00
|
|
|
#2 | ||
![]() ![]() |
Pour votre problème je ne sais pas, par contre vous pouvez remplacer :
Code :
SELECT SYSDATE INTO :new.UPDATE_DATE FROM DUAL; Vous économisez les changements de contexte entre les moteurs SQL et PL/SQL, et c'est nettement plus performant : Code :
__________________
Email : http://scr.im/waldar |
||
|
10
|
|
|
#3 |
|
Invité régulier
![]() Inscription : septembre 2006 Messages : 15 ![]() |
Je note, merci pour l'astuce.
Je la mettrais en place dès que ça fonctionnera... |
|
|
00
|
|
|
#4 | ||
![]() Inscription : décembre 2002 Messages : 2 387 ![]() |
Avant même de parler de syntaxe :
- pourquoi créer un déclencheur (ou n'importe quoi d'autre) dynamiquement si ça peut être fait normalement ? - pourquoi créer un déclencheur alors qu'un simple attribut DEFAULT sur la colonne produira le même résultat ? - et pourquoi mettre vos noms de colonnes entre guillemets, ce qui ne vous apporte aucun avantage, mais des inconvénients ? Code :
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
||
|
|
01
|
|
|
#5 | |
|
Membre expérimenté
![]() Mohamed HouriInscription : mars 2010 Messages : 286 ![]() |
Citation:
Quelle est cette raison qui fait en sorte que vous ayez opté pour le dynamique SQL au lieu et place du SQL statique? Pour en revenir à votre problème, il faut savoir que dans une procédure les grants attribués via un role ne sont pas valables. Par exemple si vous êtes capable de créer une table/trigger en ligne de commande via un role, vous ne pouvez pas créér cette table/trigger au sein d'une procédure jusqu'à ce que ce privilège vous soit directement attribué |
|
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
|
|
|
00
|
|
|
#7 | |
![]() Inscription : décembre 2002 Messages : 2 387 ![]() |
Citation:
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
|
00
|
|
|
#8 | ||
![]() ![]() |
J'ajouterai que l'attribut DEFAULT ne sert que pour les INSERT et en aucun cas pour les UPDATE, ce que l'auteur cherche à automatiser, mais comme il a les deux dates (insert et update), on peut parfaitement l'utiliser pour la date d'insertion.
S'il veut générer automatiquement les triggers de mise à jour j'imagine qu'il a beaucoup de tables et qu'il ne souhaite pas les faire une à une. Au lieu de faire une procédure et de l'appeler pour chaque table, autant tout faire dans le même bloc : Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#9 |
![]() Inscription : décembre 2002 Messages : 2 387 ![]() |
Gloups, faut que je trouve du destop pour les yeux, tellement j'étais convaincu qu'il s'agissait d'un INSERT ! (Je reviens vous voir après ma séance de flagellation...)
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com