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 :

Procédure stockée - Paramètre


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Par défaut Procédure stockée - Paramètre
    Bonjour,
    J'ai créé une procédure STOCKéE sous Sql2008 R2, elle comprend un paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ALTER PROCEDURE [dbo].[PsParcelle]
    @SParcelle varchar(50)
    as
    SELECT dbo.CAD_PARCELLES.*  
    FROM   dbo.CAD_PARCELLES
    WHERE  CAD_PARCELLES.SP_GEOMETRY.STIntersects((SELECT   CAD_PARCELLES.SP_GEOMETRY
    FROM         dbo.CAD_PARCELLES
    WHERE     NUMERO = @SParcelle))=1
    Lorsque je l'exécute sous Sql, je n'ai aucun problème.

    Je l'ai intégrée dans mon code et j'ai un souci de paramètre !

    Voici le message retourné :

    Procedure or function 'PsParcelle' expects parameter '@SParcelle', which was not supplied.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      Dim com As SqlCommand = New SqlCommand("PsParcelle", connect)
            Dim parameter As SqlParameter = com.Parameters.Add("@SParcelle", SqlDbType.VarChar, 50)
            parameter.Value = "1962"
     
     
            Dim reader As SqlDataReader = com.ExecuteReader()
     
            While reader.Read()
                Console.WriteLine("{0}", reader(3))
            End While
    Je ne trouve pas l'erreur,
    Merci d'avance pour votre aide.

    Muller Guy

  2. #2
    Membre actif Avatar de Abdellah2010
    Homme Profil pro
    Future développeur
    Inscrit en
    Novembre 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Future développeur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2010
    Messages : 55
    Par défaut
    Essayer d'exécuter votre commande Sql directement sans déclarer les paramètre, c'est à dire comme une requête simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim MyCommade= new sqlcomande("execute myProcedureStockee '..' ")

  3. #3
    Membre actif
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Par défaut
    Citation Envoyé par Abdellah2010 Voir le message
    Essayer d'exécuter votre commande Sql directement sans déclarer les paramètre, c'est à dire comme une requête simple :
    dim MyCommade= new sqlcomande("execute myProcedureStockee '..' ")

    Bonjour,
    Merci pour votre message, voici le nouveau code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Dim com As SqlCommand = New SqlCommand("execute 'PsParcelle','1962'", connect)
    Le message d'erreur :
    Incorrect syntax near 'PsParcelle'
    Salutations

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    avec ton premier code, tu peux juste rajouter command.commandtype= storedprocedure, je pense qu'il utilisera alors le paramètre (parce qu'il a le même nom)

    sinon en laissant commandtype sur text il faut écrire
    commandtext = "EXEC PsParcelle @SParcelle"
    avec cette méthode, le parameter coté vb peut avoir un autre nom que celui de la sp

    ou encore pour corriger ce que tu as tenté :
    "exec PsParcelle '1962'"

    mais le mieux est d'utiliser le parameter
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par Abdellah2010 Voir le message
    Essayer d'exécuter votre commande Sql directement sans déclarer les paramètre, c'est à dire comme une requête simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim MyCommade= new sqlcomande("execute myProcedureStockee '..' ")
    Ce code est une faille de sécurité béante au niveau injection SQL. Tu ne devrais pas suggérer ce genre de code alors que l'approche initiale était correcte (à savoir utiliser des paramètres SQL).
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Membre actif
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Par défaut solution
    Bonjour,
    J'ai trouvé la syntaxe :
    Code : 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
    20
     
     
     
            Dim connect As SqlConnection = New SqlConnection("Data Source=PRECISION_02;Initial Catalog=GESTION_PARCELLE;Integrated Security=True")
            connect.Open()
     
     
            Dim ssql As String = "SELECT dbo.CAD_PARCELLES.* FROM dbo.CAD_PARCELLES WHERE CAD_PARCELLES.SP_GEOMETRY.STIntersects((SELECT CAD_PARCELLES.SP_GEOMETRY FROM dbo.CAD_PARCELLES WHERE NUMERO = @SParcelle))=1"
     
     
            Dim com As SqlCommand = New SqlCommand(ssql, connect)
            Dim parameter As SqlParameter = com.Parameters.Add("@SParcelle", SqlDbType.VarChar, 50)
            parameter.Value = "1692"
     
     
            Dim reader As SqlDataReader = com.ExecuteReader()
     
            While reader.Read()
                Console.WriteLine("{0}", reader(3))
            End While

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/09/2008, 14h49
  2. Réponses: 6
    Dernier message: 19/07/2007, 16h48
  3. [PB 7.0.3] Procédures stockées : paramètres in
    Par lucimast dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 21/03/2007, 15h00
  4. [c#][procédure stockée] paramètre à null
    Par pinocchio dans le forum Accès aux données
    Réponses: 2
    Dernier message: 02/10/2006, 16h09
  5. [C#] Procédures stockées - Paramètres "null"
    Par aymron dans le forum ASP.NET
    Réponses: 1
    Dernier message: 16/12/2005, 17h06

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