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

ADO.NET Discussion :

Oracle.DataAccess.Client procédure stockée ORA-01403


Sujet :

ADO.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 179
    Par défaut Oracle.DataAccess.Client procédure stockée ORA-01403
    Bonsoir,

    Microsoft ayant annoncé que System.Data.OracleClient ne serait plus maintenu dans les futures versions du FrameWork, j'ai essayé de remplacer ce pilote par Oracle.DataAccess.Client après avoir installé ODT.

    L'appel à une procédure stockée provoque l'erreur suivante :

    ORA-01403: aucune donnée trouvée
    ORA-06512: à "SCHEMA.MA_FONCTION", ligne 15
    ORA-06512: à ligne 1
    Oracle Data Provider for .NET
    à Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
    à Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck)
    à Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
    Or la même procédure stockée dans la même application fonctionnait parfaitement avec OracleClient!
    Quelqu'un a-t-il une idée ?

    Merci d'avance

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Oui, enfin il y a deux problèmes (le deuxième étant révélé par le premier ) :

    - le premier est très certainement un problème de paramètres. Par défaut, le provider Oracle traite les paramètres par rang et non par nom; pour remettre le comportement du provider Microsoft (traitement par le nom), penser à mettre dans les commandes Oracle la propriété BindByName à true.

    J'ai déjà eu ce problème : http://www.developpez.net/forums/d10...pel-proc-stoc/


    - l'erreur que tu obtiens revèle aussi l'absence de traitement de l'exception "no data found" dans la programmation de ta proc stoc. En PL/SQL, un SELECT ... INTO .. lève une exception si aucune donnée n'est trouvée.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 179
    Par défaut [Résolu]Oracle.DataAccess.Client procédure stockée ORA-01403
    Bonjour,
    Bingo ! That's it
    C'est d'autant plus surprenant que le passage de paramètres par noms est plutôt une habitude Oracle que Microsoft me semble-t-il.
    Qui plus est je n'ai pas vu cette propriété mentionnée dans les exemples donnés par Oracle.
    Evidemment le no_data_found n'était que la conséquence de l'inversion probable des paramètres, j'aurai dû y penser plus tôt !

    Enfin merci pour votre réponse et passez de bonnes fêtes !

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Parfait. Ne pas oublier le bouton

    Citation Envoyé par clem_alain Voir le message
    C'est d'autant plus surprenant que le passage de paramètres par noms est plutôt une habitude Oracle que Microsoft me semble-t-il.
    Autant que je m'en souvienne, ADO.NET depuis sa première version a toujours eu les binding by name par défaut.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Autant que je m'en souvienne, ADO.NET depuis sa première version a toujours eu les binding by name par défaut.
    Il me semble aussi, du moins pour les SGBD qui le supportent...

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 179
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Parfait. Ne pas oublier le bouton



    Autant que je m'en souvienne, ADO.NET depuis sa première version a toujours eu les binding by name par défaut.
    Oui, c'est bien ce que je disais avec les pilotes Microsoft que ce soit OracleClient ou MSDAORA.1 j'ai toujours passé mes paramètres par noms !
    Le plus bizarre c'est qu'Oracle est plus coutumier du fait, par exemple dans SqlDeveloper la génération d'un bloc anonyme pour appeler une procédure stockée utilise systématiquement l'appel par noms !
    Bôf, "Ces mystères nous dépassent, feignons d'en être l'instigateur !"

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Cette "subtilité" (pour être poli) du provider Oracle est d'ailleurs particulièrement énervante quand on veut utiliser la couche d'abstraction d'ADO.NET (DbProviderFactory & co), parce qu'on est obligé de faire un truc spécifique pour Oracle... Dommage qu'il n'y ait pas un paramètre global genre BindByNameByDefault

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

Discussions similaires

  1. iBatis/Oracle : problème exécution procédure stockée
    Par marinew dans le forum Accès aux données
    Réponses: 6
    Dernier message: 28/02/2011, 15h31
  2. [PEAR][MDB2] Oracle 9i et procédure stockée
    Par glutock dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 07/05/2009, 19h23
  3. [CR9 Oracle] Executer une procédure stockée depuis un rapport
    Par zodeno dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 26/03/2008, 14h39
  4. Réponses: 2
    Dernier message: 05/12/2005, 16h39
  5. Réponses: 12
    Dernier message: 27/08/2003, 11h04

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