Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Interfaces de programmation
Interfaces de programmation Forum d'entraide sur l'utilisation des API Oracle : Pré-compilateurs, OCI, OCCI, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2011, 14h32   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 36
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 36
Points : 14
Points : 14
Par défaut [.NET- C#] Oracle : Appel de DBMS_JOB.run

Bojour,

je souhaite appeler depuis un code C# la procédure run du package Oracle DBMS_JOB.
Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
OracleCommand command = <MA CONNECTION ORACLE CLIENT>.CreateCommand();
command.CommandText = "DBMS_JOB.run";
command.CommandType = System.DATA.CommandType.StoredProcedure;
 
OracleParameter p_job_id = new OracleParameter();
p_job_id.Value = <L'IDENTIFIANT DU JOB>;
p_job_id.ParameterName = "p_job_id";
p_job_id.OracleType = OracleType.Number;
p_job_id.Direction = System.Data.ParameterDirection.Input;
 
OracleParameter p_force = new OracleParameter();
p_force.Value = false;
p_force.ParameterName = "p_force";
p_force.OracleType = OracleType.Number;
p_force.Direction = System.Data.ParameterDirection.Input;
 
command.Parameters.Add(p_job_id);
command.Parameters.Add(p_force);
command.ExecuteScalar();
Quand je l'exécute, l'exception suivante est générée :
Code :
1
2
3
4
ORA-06550: Ligne 1, colonne 7 :
PLS-00306: numéro ou types d'arguments erronés dans appel à 'RUN'
ORA-06550: Ligne 1, colonne 7 :
PL/SQL: Statement ignored
Pourtant, la signature de la procédure DBMS_JOB.run est bien :

Code :
1
2
3
 
DBMS_JOB.RUN( job    IN BINARY_INTEGER,
                      force  IN BOOLEAN DEFAULT FALSE);
Quelqu'un a une idée ?
Merci
themus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 16h02   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 810
Points : 5 810
Bref c'est un problème de C# plus que d'Oracle.
1) a place de
Citation:
command.CommandText = "DBMS_JOB.run";
je mettais plutôt quelque chose de type (vérifiez dans C#)
Code :
1
2
 
command.CommandText = "DBMS_JOB.run(p_job_id,p_force)
2) Le paramètre force est de type boolean et non pas
Citation:
p_force.OracleType = OracleType.Number
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 17h06   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 36
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 36
Points : 14
Points : 14
OracleType.Boolean n'existe pas en C#.

DBMS_JOB.run ou DBMS_JOB.run(p_job_id,p_force) donne à peu près le même résultat. En fait DBMS_JOB.run(p_job_id,p_force) n'est pas reconnu alors que DBMS_JOB.run est bien reconnu.
themus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 08h42   #4
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 810
Points : 5 810
Citation:
Envoyé par themus Voir le message
OracleType.Boolean n'existe pas en C#.
...
Oui mais en Pl/SQL un integer ne remplace pas un boolean. Comme le deuxième paramètre est facultatif pour l'instant exécutez votre procédure avec un seul paramètre
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
OracleCommand command = <MA CONNECTION ORACLE CLIENT>.CreateCommand();
command.CommandText = "DBMS_JOB.run";
command.CommandType = System.DATA.CommandType.StoredProcedure;
 
OracleParameter p_job_id = new OracleParameter();
p_job_id.Value = 0;
p_job_id.ParameterName = "p_job_id";
p_job_id.OracleType = OracleType.Number;
p_job_id.Direction = System.DATA.ParameterDirection.Input;
 
command.Parameters.ADD(p_job_id);
command.ExecuteScalar();
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 09h11   #5
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 36
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 36
Points : 14
Points : 14
J'ai déjà essayé mais le résultat est le même
themus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 11h59   #6
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 810
Points : 5 810
Dans ce cas reposer votre question dans le forum C#.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h06.


 
 
 
 
Partenaires

Hébergement Web