Je suis la plupart du temps un novice oracle, alors pardonnez-moi si cela est une question stupide ...Exécution d'un Oracle stocké Proc comme un autre utilisateur
J'ai un schéma appelé « CODE » avec une procédure stockée qui exécute arbitraire SQL (pour l'instant, veuillez ignorer les problèmes de sécurité potentiels associés à cela). Le code SQL transmis permet de sélectionner des données; mais toutes les données résident dans le schéma A, B ou C, mais le SQL ne sélectionne jamais qu'un seul schéma à la fois. Par exemple: L'utilisateur de type A crée une chaîne 'SELECT * FROM A.USERTABLE' - tandis que l'utilisateur de type B crée une chaîne 'SELECT * FROM B.USERTABLE'.
Ce que j'essaie de faire est de permettre à l'utilisateur de ne pas spécifier explicitement son schéma. Dans l'application .net front-end; Je sais déjà s'ils sont de type A, B ou C. Je veux que tous les trois entrent simplement 'SELECT * FROM USERTABLE'.
Le problème que j'ai est que je ne sais pas comment faire cela. Mon application ne peut exécuter proc que dans le schéma 'CODE' - donc je ne peux pas simplement dupliquer le code et laisser l'utilisateur A appeler 'A.ExecuteSQL'.
J'ai essayé quelques petites choses; mais rien n'a fonctionné jusqu'ici. Je veux que le processus ExecuteSQL reste dans le schéma CODE; mais quand 'USERTABLE' est passé, j'en ai besoin pour savoir que cela signifie parfois A.USERNAME et parfois B.USERNAME.
Des suggestions?
Comment ça marche? La première application exécute cette instruction 'ALTER' ou l'exécute dans la procédure' CODE'? – Guru
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:588045400346317188 a quelques informations supplémentaires. Il semble que vous pouvez le faire avec SQL dynamique (exécution immédiate) à l'intérieur de votre proc stocké. –
@Guru: Voir le lien AskTom de Rob P –