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

SQL Oracle Discussion :

Erreur ORA-01036: numéro/nom de variable interdit


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Juillet 2020
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 142
    Par défaut Erreur ORA-01036: numéro/nom de variable interdit
    Bonjour à tous,

    J'ai un problème sur un code, j'ai suivis un tuto sur oracle et sql + python et j'obtient une erreur comme ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-01036: numéro/nom de variable interdit
    Et voici mon code :

    Code Python : 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
    import cx_Oracle
     
     
    def stock_usi_to_stock_orli(taille,quantite,article,couleur):
     
      sql= "update prod_stok set :taille = ':quantite' where code_art_com = ':article' and code_colm=':couleur' and code_lieu='USI' and typ_enrg = '0' "
     
      try:
     
        with cx_Oracle.connect("nom", "pass", "base de donnée") as connection:
            with connection.cursor() as cursor:
                cursor.execute(sql,[taille,quantite,article,couleur])
                connection.commit()
      except cx_Oracle.Error as error:
           print(error)
     
     
    if __name__ == '__main__':
        stock_usi_to_stock_orli("QTE_3","50","184","300")

  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
    Bonjour
    Dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update prod_stok set :taille = ':quantite' where code_art_com = ':article' and code_colm=':couleur' and code_lieu='USI' and typ_enrg = '0'
    :taille indique une variable de liaison (bind variable) et non pas une colonne de la table prod_stock comme cela est nécessaire.

  3. #3
    Membre confirmé
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Juillet 2020
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 142
    Par défaut
    Bonjour,

    Merci mais moi je veux que ce soit la colonne comment, je pourrais faire alors car mes colonne s'appel QTE_3,QTE_4 etc... ?

    Merci d'avance pour ta réponse.

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Dans ce cas-là tu es en dynamique, à toi de générer la requête qui va bien en remplaçant dans ta variable sql le texte ":taille" par "qte_3"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql= "update prod_stok set "+ taille +""= ':quantite' where code_art_com = ':article' and code_colm=':couleur' and code_lieu='USI' and typ_enrg = '0' "

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    Bonjour,

    En effet pour un nom de colonne passé dynamiquement il faut que tu concatènes. Par contre pour les variables liées tu n'a pas besoin de les mettre entre côtes normalement car si le type de données est correct la "traduction" est automatique.

  6. #6
    Membre confirmé
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Juillet 2020
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 142
    Par défaut
    Re,

    ça fonctionne toujours pas ça me mais la même erreur
    Code Python : 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
    import cx_Oracle
     
     
    def stock_usi_to_stock_orli(taille,quantite,article,couleur):
     
     sql= "update prod_stok set "+ taille +"= :quantite where code_art_com = :article and code_colm=:couleur and code_lieu= 'USI' and typ_enrg = '0'"
     try:
         with cx_Oracle.connect("nom", "pass", "base_de_donnée") as connection:
             with connection.cursor() as cursor:
                 cursor.execute(sql,[taille,quantite,article,couleur])
                 connection.commit()
     except cx_Oracle.Error as error:
         print(error)
     
     
    if __name__ == '__main__':
        stock_usi_to_stock_orli("qte_3",50,184,300)

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

Discussions similaires

  1. ORA-01036 : numéro/nom de variable interdit
    Par Crowww dans le forum VB.NET
    Réponses: 13
    Dernier message: 28/05/2013, 12h11
  2. ORA-01036:numéro/nom de variable interdit
    Par ahmedige dans le forum VB.NET
    Réponses: 1
    Dernier message: 18/05/2011, 16h18
  3. Réponses: 10
    Dernier message: 11/05/2011, 18h14
  4. ORA-01036: numéro/nom de variable interdit
    Par cnguyen dans le forum SQL
    Réponses: 11
    Dernier message: 25/03/2010, 16h01
  5. Erreur ORA-01036 - numéro/nom de variable interdit
    Par Daikyo dans le forum Windows Forms
    Réponses: 1
    Dernier message: 11/06/2008, 02h25

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