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 d'exécution '-2147217887 (80040e21)' sous ORACLE [Fait]


Sujet :

SQL Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut "Erreur d'exécution '-2147217887 (80040e21)' sous ORACLE
    Bonjour ,

    dans une application en VB6 reliée à une base Oracle via une connexion ADO, je déclare un recordset de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim vRs As ADODB.Recordset
    Dim vSQLTmp As String
    qui va exécuter la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT ANE_AN, ANE_COD, ANP_COD, ANS_COD,
    COUNT(ANS_COD) OVER(PARTITION BY ANE_AN, ANE_COD, ANP_COD) AS NBSEQ,
    SSQ_FLG, SQ_FLG
    FROM W_ANIM_CDE_FR
    J'ouvre un recordset qui exécute la requête ci dessus dont les propriétés sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CursorLocation=adUseClient, CursorType=adOpenStatic, LockType=adLockBatchOptimistic
    J'exécute par la suite le bloc de code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Do Until vRs.EOF
    [...]
     
        vRs!SSQ_FLG = "1"
     
    [...]
    Loop
    vRs.close
    vRs.UpdateBatch
     
    End Sub
    Quand on arrive sur l'instruction d'affectation vRs!SSQ_FLG = "1", l'erreur suivante se produit :

    Erreur d'exécution '-2147217887 (80040e21)' :
    Une opération en plusieurs étapes a généré des erreurs. Vérifier chaque valeur d'état.

    Le champ SSQ_FLG est de type varchar2 d'une taille de 1 octet.

    Lorsque je passe par une requête UPDATE pour mettre à jour SSQ_FLG, ça marche, mais du coup je perds l'avantage de la mise à jour par lot du UpdateBatch( ).

    Serait ce à cause de la fonction d'aggrégation SELECT COUNT( ) propre à ORACLE, ou bien à cause du paramétrage de mon recordset ?

    Une aide de votre part serait la bienvenue

    Merci

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    count() n'est pas propre à Oracle. Count existe aussi bien chez microsoft que chez ibm. Peut-être que VB est tellement débile qu'il ne sait pas la différence entre une fonction analytique ou une fonction d'aggrégation . Ou alors tu employes une version hyper ancienne.

    Essaye de mettre ta requête dans une vue...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2006
    Messages : 139
    Points : 152
    Points
    152
    Par défaut
    Laurent Vous êtes sûr que la fonction analytique est un standard SQL?

    Sinon on doit pouvoir faire une procedure PL/SQL qui gere l'update(peut etre avec un Forall) et qui ramène au besoin un flag ou un tableau.

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    je pense que ca fonctionne sur DB2 et MSSQL mais je n'ai pas teste...

    http://msdn.microsoft.com/en-us/library/ms189461.aspx
    http://publib.boulder.ibm.com/infoce...n/r0000736.htm

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2006
    Messages : 139
    Points : 152
    Points
    152
    Par défaut
    Ah oui ben autant pour moi.
    Il faudrait que je regarde un peu plus que mon ..Oracle.

Discussions similaires

  1. problème d'exécution de requêtes sous oracle 9i
    Par loukili81 dans le forum Oracle
    Réponses: 3
    Dernier message: 12/07/2007, 11h24
  2. Erreur d'exécution oracle
    Par nicocolt dans le forum Oracle
    Réponses: 20
    Dernier message: 22/08/2006, 09h54
  3. erreurs lors de l'installation d'oracle 10.1.0.3 sous fedora
    Par armando123 dans le forum Installation
    Réponses: 6
    Dernier message: 04/07/2006, 12h06
  4. problème d'exécution d'un report sous oracle 10g
    Par seure dans le forum Reports
    Réponses: 1
    Dernier message: 22/03/2006, 17h47
  5. Erreurs d'exécution sous delphi 5
    Par nkd dans le forum Langage
    Réponses: 3
    Dernier message: 06/11/2004, 17h25

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