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

VB.NET Discussion :

Retour d'une procédure stockée Oracle avec paramètre NULL


Sujet :

VB.NET

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Points : 130
    Points
    130
    Par défaut Retour d'une procédure stockée Oracle avec paramètre NULL
    Bonjour,

    Mon projet, sous VB.Net 2012, appelle une procédure stockée d'Oracle. Cette procédure possède plusieurs paramètres IN OUT (Number pour Oracle). Certains de ces paramètres peuvent avoir NULL comme valeur de retour.
    Comme je fais une affectation directe de ces paramètres dans des variables VB.Net (Integer), tout marche bien quand les paramètres ont une valeur. Mais quand ils n'en ont pas cela plante.

    Donc je voudrais savoir comment tester que la valeur de retour du paramètre Oracle est NULL ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ' ID_1 a toujours une valeur donc ca marche
    ID_1 = cmdProcedure.Parameters("pnum_ID_1").Value
     
    ' ID_2 peut être NULL ou avoir une valeur.
    ' Ce code ne marche pas
    If Not cmdProcedure.Parameters("pnum_ID_2").Value = System.DBNull.Value Then
       ID_2 = cmdProcedure.Parameters("pnum_ID_2").Value
    End If
    Merci de votre aide.
    Bon(s) code(s) et bonnes fêtes à tous

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    L'utilisation de DBNull ne fonctionne que pour les types de données DbType. Pour les OracleDbType, tu peux utiliser ceci :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If DirectCast(param.Value, INullable).IsNull Then
        ' Ton code
    End If
    Car heureusement, les OracleDbType implémentent tous l'interface INullable.

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Points : 130
    Points
    130
    Par défaut
    J'ai modifé mon code et j'ai une erreur
    Impossible d'effectuer un cast d'un objet de type 'System.DBNull' en type 'Oracle.DataAccess.Types.INullable'.
    Comme mon paramètre est IN OUT, je l'ai initialisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ID_2.Value = System.DBNull.Value
    Comme OracleDbType ne possède pas de valeur NULL, je ne sais pas quoi mettre d'autre.

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Tu peux définir le statut du OracleParameter comme ceci :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    ID_2.Status = OracleParameterStatus.NullInsert
    Et en principe ainsi enlever la ligne qui te pose problème.

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Points : 130
    Points
    130
    Par défaut
    J'ai enlevé l'initialisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ID_2.Value = System.DBNull.Value
    que j'ai remplacé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ID_2.Status = OracleParameterStatus.NullInsert
    J'ai toujours l'erreur à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not DirectCast(cmdProcedure.Parameters("pnum_ID_2").Value, INullable).IsNull Then

Discussions similaires

  1. [XL-2010] Pas de retour sur un paramètre output depuis une procédure stockée oracle
    Par darmet dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/07/2014, 15h47
  2. Réponses: 2
    Dernier message: 26/01/2010, 11h05
  3. Réponses: 15
    Dernier message: 18/11/2008, 18h41
  4. Problème avec retour d'une procédure stockée
    Par jomphh dans le forum Deski
    Réponses: 22
    Dernier message: 22/11/2007, 00h57
  5. [PDO] Paramètre de retour d'une procèdure stockée
    Par Sinclair dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/10/2007, 23h14

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