Problème dans procédure stockée avec ALTER SESSION
Tout d'abord,
bonjour à toutes et à tous,
J'ai plutôt une bonne expertise SQL Server mais là, je dois oeuvrer en Oracle et je sèche sur un problème.
J'ai un ensemble d'utilisateurs (schéma) et un schéma de travail TRAV sur lequel va travailler mon programme.
Je possède une table TABLE1 dans les schéma qui doit être alimenté depuis mon schéma de travail, cette table possède un ID en autoincrément (Trigger en Oracle).
Afin que ma procédure stockée compile, j'ai donc recopié la table dans le schéma TRAV.
Dans ma procédure je dois écrire tantôt dans mon schéma TRAV, tantôt dans d'autre schéma.
J'ai donc utilisé dans ma procédure :
Code:
1 2
| -- Set Good Schema
execute immediate 'ALTER SESSION SET CURRENT_SCHEMA=' || myschema; |
.
Si j'essai l'extrait suivant en dehors de la procédure stockée
Code:
1 2 3 4
| ALTER SESSION SET CURRENT_SCHEMA=AutreSchema;
INSERT INTO TABLE1 (MonCh)
VALUES ('test');
ALTER SESSION SET CURRENT_SCHEMA=TRAV ; |
Cela fonctionne parfaitement. En effet le schéma Autreschema possède bien la table et le trigger qui va bien pour renseigner le champs ID.
Lorsque j'exécute ma procédure stockée qui possède la même séquence, j'obtiens le message suivant :
Citation:
Rapport d'erreur -
ORA-01400: impossible d'insérer NULL dans ("TRAV "."TABLE1 "."ID")
ORA-06512: à "TRAV .MAPROCSTOCK", ligne 52
ORA-06512: à ligne 21
01400. 00000 - "cannot insert NULL into (%s)"
*Cause: An attempt was made to insert NULL into previously listed objects.
*Action: These objects cannot accept NULL values.
L'erreur est donc logique si celui ci essai d'insérer dans le schéma TRAV puisque le trigger n'existe pas.
Je peux néanmoins confirmer que le changement de session a lieu puisque dans l'exécution de mes requêtes le current user est bien AutreSchema.
Il doit me manquer quelques chose mais quoi ?
Merci de votre aide.