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

C# Discussion :

ORA-06550 PLS-00801 erreur interne [Débutant]


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 44
    Points
    44
    Par défaut ORA-06550 PLS-00801 erreur interne
    Bonjour,
    J'ai un soucis d'execution d'une procédure stockée sur une base oracle.

    La procédure je ne connais pas son contenu.
    Je sait qu'elle posséde 2 paramètres et quel renvoi un number.

    Ma connexion se passe bien.

    Mais à l'execution de ExecuteNonQuery() j'ai une execption
    ORA-06550 PLS-00801 erreur interne[22503] PL/SQL:Statement ignored
    Voici ma méthode:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
            public bool execProcedureOracle(string sNomProc, string[,] lstParametre) 
            {
                //Déclaration des Variables
                bool bValRetour = true;
                try
                {
                    this.MaCnx.Open();
                    this.mcmd = new OracleCommand(sNomProc, MaCnx);
                    this.mcmd.CommandType = CommandType.StoredProcedure;
     
                    for (int i = 0; i < 3; i++)
                    {
                        addParametre(lstParametre[i, 0], lstParametre[i, 1], lstParametre[i, 2], lstParametre[i, 3]);
                    }
                    this.mcmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    sMsgException = ex.Message;
                    bValRetour = false;
                }
                finally
                {
                    if (MaCnx != null)
                    {
                        this.MaCnx.Close();
                    }
     
                }
     
     
                return bValRetour;
            }
    et le programme qui l'appel :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
           static void Main()
            {
                Oracle cnxOracle = new Oracle();
                string sMaProc;
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
     
                sMaProc = "DOSSIER.GES_APPEL_EXT.OPENSESSION( User ,Pwd )";
     
                string sPwd = "";
                string sLogin = "Invité";
                string[,] lstEnteteParametre = { {"","int","","o"},{ "User", "varchar2", sLogin,"i" }, { "Pwd", "varchar2", sPwd ,"i"} };
     
     
     
                cnxOracle.connexionOracle("DOSSIER", "ADMIN", "ADMIN", 120);
                if (true == cnxOracle.execProcedureOracle(sMaProc, lstEnteteParametre))
                {
                    sMaProc = "DOSSIER.GES_APPEL_EXT.CLOSESESSION()";
                    cnxOracle.execProcedureOracle(sMaProc, lstEnteteParametre);
                    MessageBox.Show("OK!!!!!");
                    System.Console.ReadKey();
                }
                else
                {
                    MessageBox.Show(cnxOracle.getMsgErreur());
                    Application.Run(new Form1());
                }
    Par avance merci.

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    Il me semble qu'il faut mettre juste le nom de la proc (sans parenthèse ni autre chose), soit :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    sMaProc = "DOSSIER.GES_APPEL_EXT.OPENSESSION";
    Même chose plus loin :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    sMaProc = "DOSSIER.GES_APPEL_EXT.CLOSESESSION";

  3. #3
    Membre du Club
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 44
    Points
    44
    Par défaut
    si j'appel mes procedures de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sMaProc = "DOSSIER.GES_APPEL_EXT.OPENSESSION";
    j'ai une erreur :
    ORA-06550:ligne1, colonne 7;
    PLS-00201:l'identificateur 'DOSSIER.GES_APPEL_EXT' doit être déclaré.
    Je dois avoir oublier un truc dans mon code, mais je ne vois pas quoi.
    Précision j'ai compiler en framework 3.5.
    Merci par avance de votre aide.

  4. #4
    Membre du Club
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 44
    Points
    44
    Par défaut
    J'ai fais des modifications mais j'ai toujours un message d'erreur.
    Message "ORA-06550: Ligne 1, colonne 7 :
    PLS-00221: 'OPENSESSION' n'est pas une procédure ou est indéfini
    ORA-06550: Ligne 1, colonne 7
    PL/SQL: Statement ignored"
    J'ai testé l'execution dans SQLDeveloppeur la procédure marche sans souci.
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.Odbc;
    using System.Data.OracleClient;
     
     
    namespace OracleLib
    {
        public class Oracle 
        {
            //Déclaration global des Variables
            private OracleConnection MaCnx = null;
            private OracleCommand mcmd = null;
            private string sMsgException;
     
            public void connexionOracle(string sDsn,string sLogin,string sPwd,int TimeOut )
            {
                //Déclaration local des Variables
                string sMaConnexion =
                    "Data Source=" + sDsn +
                    ";SERVER = osIris-gest:1551/EURATEC10G" +
                    ";User Id=" + sLogin +
                    ";Password=" + sPwd;
     
                this.MaCnx = new OracleConnection(sMaConnexion);
     
            }
     
            public string getMsgErreur()
            {
                return sMsgException;
            }
            public bool execProcedureOracle(string sNomProc, string[,] lstParametre) 
            {
                //Déclaration des Variables
                bool bValRetour = true;
                int xNumeric;
                try
                {
                    this.MaCnx.Open();
                    this.mcmd = new OracleCommand(sNomProc, MaCnx);
                    this.mcmd.CommandType = CommandType.StoredProcedure;
     
                    for (int i = 0; i < 3; i++)
                    {
                        addParametre(lstParametre[i, 0], lstParametre[i, 1], lstParametre[i, 2], lstParametre[i, 3]);
                    }
                    mcmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    sMsgException = ex.Message;
                    bValRetour = false;
                }
                finally
                {
                    if (MaCnx != null)
                    {
                        this.MaCnx.Close();
                    }
     
                }
     
     
                return bValRetour;
            }
            private void addParametre(string name,string type ,string value,string direction)
            {
                //Déclaration des Variables
                OracleParameter MonParam = new OracleParameter();
                MonParam.OracleType = ReturnType(type);
                MonParam.ParameterName = name;
                MonParam.Direction = ReturnDirection(direction);
                if (MonParam.Direction != ParameterDirection.ReturnValue)
                {
                    mcmd.Parameters.Add(MonParam).Value = value;
                }
            }
            public object getValue(string enteteParametre)
            {
                return this.mcmd.Parameters[enteteParametre];
            }
     
            private OracleType ReturnType(string val)
            {
                switch (val.ToLower())
                {
                    case "bfile": return OracleType.BFile;
                    case "blob": return OracleType.Blob;
                    case "byte": return OracleType.Byte;
                    case "char": return OracleType.Char;
                    case "datetime": return OracleType.DateTime;
                    case "clob": return OracleType.Clob;
                    case "float": return OracleType.Float;
                    case "cursor": return OracleType.Cursor;
                    case "int16": return OracleType.Int16;
                    case "int32": return OracleType.Int32;
                    case "double": return OracleType.Double;
                    case "intervaldaytosecond": return OracleType.IntervalDayToSecond;
                    case "nchar": return OracleType.NChar;
                    case "nclob": return OracleType.NClob;
                    case "nvarchar": return OracleType.NVarChar;
                    case "Raw": return OracleType.Raw;
                    case "intervalyeartomonth": return OracleType.IntervalYearToMonth;
                    case "longraw": return OracleType.LongRaw;
                    case "longvarchar": return OracleType.LongVarChar;
                    case "number": return OracleType.Number;
                    case "rowid": return OracleType.RowId;
                    case "sbyte": return OracleType.SByte;
                    case "timestamp": return OracleType.Timestamp;
                    case "timestamplocal": return OracleType.TimestampLocal;
                    case "timestampwithtz": return OracleType.TimestampWithTZ;
                    case "uint16": return OracleType.UInt16;
                    case "uint32": return OracleType.UInt32;
                    case "varchar": return OracleType.VarChar;
                } return OracleType.VarChar;
            }
            private ParameterDirection ReturnDirection(string val)
            {
                switch (val.ToLower())
                {
                    case "i": return ParameterDirection.Input;
                    case "o": return ParameterDirection.Output;
                    case "r": return ParameterDirection.ReturnValue;
                } return ParameterDirection.InputOutput;
            }
     
        }
    }

  5. #5
    Membre du Club
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 44
    Points
    44
    Par défaut
    je n'ajoutai pas mes paramètres à ma commandes.
    Boulet

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Tu veux dire que le addParametre ne fonctionnait pas ?

    En tout cas si c'est réglé tant mieux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [11gR2] ORA-00600: code d'erreur interne
    Par ducho dans le forum Administration
    Réponses: 8
    Dernier message: 10/02/2014, 16h41
  2. Erreur ORA-06550 PLS-00103
    Par ammmm dans le forum PL/SQL
    Réponses: 5
    Dernier message: 16/11/2012, 14h56
  3. Réponses: 1
    Dernier message: 12/10/2010, 10h22
  4. Réponses: 9
    Dernier message: 20/02/2007, 14h42

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