IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces de programmation Oracle Discussion :

[.NET- C#] Oracle : Appel de DBMS_JOB.run


Sujet :

Interfaces de programmation Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 37
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DBMS_JOB.RUN( job    IN BINARY_INTEGER,
                          force  IN BOOLEAN DEFAULT FALSE);
    Quelqu'un a une idée ?
    Merci

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Par défaut
    Bref c'est un problème de C# plus que d'Oracle.
    1) a place de
    command.CommandText = "DBMS_JOB.run";
    je mettais plutôt quelque chose de type (vérifiez dans C#)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    command.CommandText = "DBMS_JOB.run(p_job_id,p_force)
    2) Le paramètre force est de type boolean et non pas
    p_force.OracleType = OracleType.Number

  3. #3
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 37
    Par défaut
    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.

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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();

  5. #5
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 37
    Par défaut
    J'ai déjà essayé mais le résultat est le même

  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Par défaut
    Dans ce cas reposer votre question dans le forum C#.

Discussions similaires

  1. C# --> Oracle: Appel de DBMS_JOB.run
    Par themus dans le forum C#
    Réponses: 2
    Dernier message: 30/05/2011, 10h55
  2. [ADO.Net][C#/Oracle]Comment gérer OracleType.VarChar?
    Par el_poitevin dans le forum Accès aux données
    Réponses: 5
    Dernier message: 30/03/2006, 13h08
  3. [Net*8] oracle wallet manager
    Par sch dans le forum Oracle
    Réponses: 1
    Dernier message: 08/11/2005, 17h07
  4. [ADO.Net][C#/Oracle] Comment utiliser une requête paramètrée ?
    Par kaboume dans le forum Accès aux données
    Réponses: 4
    Dernier message: 05/07/2005, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo