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

PL/SQL Oracle Discussion :

ORA-01008 : toutes les variables ne sont pas liées


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Points : 63
    Points
    63
    Par défaut ORA-01008 : toutes les variables ne sont pas liées
    Bonjour,

    Nota : je suis débutant sur bdd Oracle.

    Le contexte :
    J'ai récupéré une "application".
    En gros, c'est une base Oracle relais qui récupère des données d'applications et qui fourni d'autres applications. Le tout grace à des .bat et des .sql qui utilisent CFT, sqlldr et sqlplus. Une centaine de tables, autant de vues, une quarantaine de .bat et le double de .SQL. Cool...
    Ah, j'oubliais, le précédent développeur à décider qu'il n'y aurait pas ni identifiants ni clés primaires de définies dans les tables...

    On peut visualiser certaines données grace à une application web créé par CodeOnTime (http://codeontime.com/).Certaines tables sont même en écriture !
    Ah...oui, c'est bien, mais la MOA vient de s'apercevoir que l'on peut faire des doublons .
    Je doit donc faire une "business rule" en SQL dans CodeOnTime avant l'insertion/modification pour éviter les doublons. La doc de COT ne connait quasiment que SQL Server (moi aussi d'ailleurs !).

    Donc le script de test avant insertion/modification est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    begin
      declare Existe Decimal;
      begin
        select count(*) into :Existe from MaTable
        where ENTITE_PC= :ENTITE_PC and SETID = :SETID;
      IF :Existe > 0 then 
        :BusinessRules_PreventDefault :=1;
        :Result_Focus :='Le Machin ' + :ENTITE_PC  + ' ' + :SETID +' existe déjà.';
        :Result_ShowViewMessage := 'Erreur lors de lexécution de la commande '  + :Arguments_CommandName ;
      End if;
      end;
    end;
    :ENTITE_PC et :SETID correpondent au données que je veux Ajouter/Modifier
    :BusinessRules_PreventDefault, :Result_Focus, :Result_ShowViewMessage et :Arguments_CommandName sont propres à COT et indique , s'il y eu une erreur; les messages d'erreur ainsi que le type de "command" (insert ou update).

    Ca fonctionne dans SQLDevelopper, mais dans l'application WEB j'ai cette erreur :
    ORA-01008: toutes les variables ne sont pas liées
    J'ai tracé le code généré par COT dans Visual Studio et les variables sont bien envoyées en paramétres à la requête.

    Si quelqu'un pouvait m'aiguiller, mes deux collegues connaissnt Oracle sont en congés jusqu'a fin août, et je doit faire une MEP le 2 septembre

  2. #2
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Ou l'art de réinventer les PK et FK

    Ne serait-ce pas plus simple d'ajouter les clés nécessaires à l'intégrité des données de la base plutôt que d'appliquer des pansements logiciels à la place ?

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Points : 63
    Points
    63
    Par défaut
    Ne serait-ce pas plus simple d'ajouter les clés nécessaires à l'intégrité des données de la base plutôt que d'appliquer des pansements logiciels à la place ?
    Si tu m'aide à modifier tous les script SQL, et à tout tester, pourquoi pas
    Plus sérieusement, pas pour l'instant (et je suis en train de pousser la MOA pour tout réécrire)

    Pour info :
    Comment faire un "business rule" en SQL : http://codeontime.com/learn/sql-busi...les/validation
    et pour Oracle : http://codeontime.com/blog/2012/11/s...acle-databases

  4. #4
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Citation Envoyé par rvs75 Voir le message
    Si tu m'aide à modifier tous les script SQL, et à tout tester, pourquoi pas
    Plus sérieusement, pas pour l'instant (et je suis en train de pousser la MOA pour tout réécrire)

    Pour info :
    Comment faire un "business rule" en SQL : http://codeontime.com/learn/sql-busi...les/validation
    et pour Oracle : http://codeontime.com/blog/2012/11/s...acle-databases
    Dans les deux cas c'est le même chose, que tu le fasses par programme ou par contraintes SGBD sauf qu'il y a une méthode bien plus propre.

    Après j'ai bien conscience que cela prend du temps, mais pourquoi pas monter les contraintes au fur et à mesure ?
    Qui plus est, en montant les contraintes tu sauras directement si des doublons existent contrairement à ta technique qui évites uniquement les futurs doublon et en aucun cas ceux actuels

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Points : 63
    Points
    63
    Par défaut
    Parce que je n'ai pas toutes les connaissances requises, parce que cela n'ai pas demander ni pas la MOA, ni pour mon chef de projet, parce que je dois livrer avec les docs d'install à l'équipe d'intégration 10 jours avant la MEP,...

    Je suis désolé, je n'ai ni la liberté, ni le temps de faire ce que je veux ou ce qui serait propre. Pour être honnête, ce machin cette appli est une vrai m...., et elle est entièrement à réécrire, parce que...

    Pour l'instant, ce qui gène qui m'embête, c'est cette histoire de variable non liées. Cela doit-être une erreur simple, voire con et qui va me donner la honte pendant dix ans, mais je ne vois pas, et les collègues qui pourraient m'aider sont en congés.

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    N'est-ce pas à cause des ":" devant des noms de certaines variables ?
    Supprimez-les.

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Points : 63
    Points
    63
    Par défaut
    C'est ce que j'ai pu comprendre au gré de mes pérégrination sur Google.
    Je vais testé, mais il faut que je modifie le code généré par COT.
    Si c'est çà, rapport de bug à CodeOnTime !!!

    Je le ferais lundi.

    Merci !

    Nota: le BindByName est bien à true dans le code généré.

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Points : 63
    Points
    63
    Par défaut
    Bon, cela ne change rien !
    J'ai refilé la patate chaude à mon chef de projet car il est connu du support de COT.
    Merci quand même

Discussions similaires

  1. [Oracle] ORA-01008: toutes les variables ne sont pas liées
    Par MGABIN dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 10/05/2010, 15h59
  2. Réponses: 3
    Dernier message: 05/03/2009, 14h23
  3. Réponses: 1
    Dernier message: 11/06/2008, 11h01
  4. Réponses: 5
    Dernier message: 03/04/2008, 13h00
  5. Réponses: 5
    Dernier message: 03/03/2008, 11h31

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