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 :

[C#] Erreur Oracle avec une requete paramétrée


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 38
    Par défaut [C#] Erreur Oracle avec une requete paramétrée
    Bonjour,

    J'ai une requete que j'avais construit au départ en chaines de caracteres mais ca me pose des problemes pour les floats (, ou .) avec les différentes configurations settings quand on passe d'un serveur anglais à francais.
    ...donc c'est pas grve je me dis je vais faire ca bien propre avec des parametres pour ma requete mais je tombe tjours sur cette erreur:


    System.Data.OracleClient.OracleException:
    ORA-01036: illegal variable name/number


    Le début de ma requete est classique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    OracleConnection _connection = new OracleConnection(ConfigurationSettings.AppSettings["ConnectString"]);
    _connection.Open();
     
    OracleCommand _command = new OracleCommand();
    _command.Connection = _connection;
    _command.CommandText = "INSERT INTO kpi_main_page(box,grid,line,last_updated) values(@box, @grid, @line, @last_updated)";

    Ma solution 1 qui plante:

    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
     
    OracleParameter _param;
     
    _param = new OracleParameter("@box",OracleType.Number);
    _param.Value = 6;
    _command.Parameters.Add(_param);
     
    _param = new OracleParameter("@grid",OracleType.Number);
    _param.Value = 7;
    _command.Parameters.Add(_param);
     
    _param = new OracleParameter("@line",OracleType.Number);
    _param.Value = 8;
    _command.Parameters.Add(_param);
     
    _param = new OracleParameter("@last_updated",OracleType.VarChar,15);
    _param.Value = "201099";
    _command.Parameters.Add(_param);
     
    _command.ExecuteNonQuery(); /*** PLANTAGE ORA-01036 ***/
     
    ...

    Ma solution 2: (qui ne marche pas mieux)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    _command.Parameters.Add("@box", 8);
    _command.Parameters.Add("@grid", 8);
    _command.Parameters.Add("@line", 8 ); 
    _command.Parameters.Add("@last_updated", "8" );
    _command.ExecuteNonQuery(); /*** PLANTAGE ORA-01036 ***/
     
    ...


    J'ai reduit ma requete a ces quatres champs car ils constituent a eux quatre ma clef primaire.

    Type des données sous Oracle:
    Box -> NUMBER, longueur 3
    Grid -> NUMBER, longueur 3
    Line-> NUMBER, longueur 3
    last_updated-> VARCHAR2, longueur 15

    Enfin si je lance directement dans oracle une requete du genre INSERT INTO kpi_main_page(box,grid,line,last_updated) values( 98, 99, 99, '200501') ca marche nickel !


    Avez vous une piste pour m'aider je ne vois pas ou je fais une erreur !?

    Merci d'avance pour votre aide

    Gaël

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 38
    Par défaut
    Je pense que je viens de trouver (enfin faut encore que je teste maintenant sur ma query entiere)...et je suis degouté vu tout le temps que j'ai passé pour cette connerie !!!!!!

    En fait j'ai remplacé tous mes @ par des : (entre tps j'étais passé sur une table avec un seul champs pour mes tests lol)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    _command.CommandText ="INSERT INTO CURRENT_PERIOD(last_updated) values(:last_updated)";
     
    OracleParameter _parameter = _command.Parameters.Add(new OracleParameter(":last_updated",OracleType.VarChar,15));
    _parameter.Direction = ParameterDirection.Input;
    _parameter.Value = "TOTO";
    ...est une particularité Oracle (car pour mes anciens progs avec SQLServer ca marchait tres bien )

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/11/2014, 13h26
  2. Oracle/XML avec une requete imbriquée
    Par FABFAB125 dans le forum SQL
    Réponses: 16
    Dernier message: 20/07/2007, 12h52
  3. [MySQL] erreur #1064 avec une requete
    Par oceane751 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/02/2006, 22h31
  4. [ORACLE][SQL] procedure sous delphi avec une requete SQL
    Par nivet dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/11/2004, 13h43
  5. Date nulle dans une requete paramétrée avec TParameter
    Par denrette dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/06/2004, 08h37

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