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

MS SQL Server Discussion :

[SQL server 2005][vb.net] procédure stockée, valeur de retour


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2003
    Messages : 201
    Points : 182
    Points
    182
    Par défaut [SQL server 2005][vb.net] procédure stockée, valeur de retour
    bonjour a tous,

    je travail présentement sur mes procédures stockées et j'en ai une qui me renvois plusieurs enregistrement, je voudrais les mettre dans un tableau et je sais que je peux activer une valeur de retour dans ma procédure me permettant de savoir le nombre de ligne que la procédure me renvois avant d'enter dans la lecture de mon curseur.

    qu'est-ce que je dois ajouter à ma requête pour affecter une genre de @@rowcount à ma variable Return Value. et si jamais....comment est-ce que je peux dire a mon programme d'aller chercher cette valeur.

    merci a tous, bonne continuité

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    La variable @@rowcount est très volatile
    Il faut la fixer aussitôt le select fait dans une variable locale de la SP
    Ensuite, en dernières lignes de SP, exécutez un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    return @MavariableLocaleContenantLeRowCount
    end
    Ceci étant dit, je me permets de vous faire remarquer qu'il serait plus judicieux d'utiliser une variable OUT plutôt que le code retour de la SP pour retourner des infos de ce type, le code retour servant normalement à retourner un état de SP (0 si tout s'est bien passé, sinon code erreur)

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    bonjour les amis,

    je profite de cette discussion, pour vous exposez mon problème si vous le permettez :

    voila je sais créer un SP dans sqlserveur, mais étant novice dans le VB.Net, j'aimerais bien apprendre comment faire pour faire appeler un SP a partir d'un script VB.net, donc si vous voulez bien me postez un exemple d'appel d'une procédure cela serait sympa


    merci d'avance

  4. #4
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2003
    Messages : 201
    Points : 182
    Points
    182
    Par défaut
    eheh je te comprend bien

    voici moi comment j'appelle une procédure stockée en général :

    inclure : imports system.data.sqlclient !!

    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
    21
    22
    23
      Public Sub RQTSVrangement()
    'variable étant la chaine de connexion        
    connectionstring = "Data Source=SERVEUR\SQLEXPRESS;Initial Catalog=BD;Persist Security Info=True;User ID=test;Password=1"
    'création de la connexion
    Using connection As New SqlConnection(connectionstring)
    'ouverture de la connexion            
    connection.Open()
    'création de lobjet de requête            
    Dim commande As SqlCommand = connection.CreateCommand()
                commande.CommandType = Data.CommandType.StoredProcedure
                commande.CommandText = "RQEntreTSVcodinv"
    'transfert de paramètre à une procédure stockée            
    commande.Parameters.AddWithValue("@var1", var1)
    'création de mon curseur de lecture            
    Dim curseur As SqlDataReader = commande.ExecuteReader()
    'lecture des enregistrements donnés par la procédure            
    While (curseur.Read())
                    var1 = (curseur.GetInt32(1))
                    var2 = (curseur.GetFloat(2))
                End While
                curseur.Close()
            End Using
        End Sub
    ce code permet d'appeler un procédure et ensuite de lire les informations qu'elle retourne !!! ATTENTION DE DONNER LES ACCÈS ADÉQUAT DANS SQL,DE BIEN GÉRER TA SURFACE D'EXPOSITION. SI APPLICATION RÉSEAU, VÉRIFIER TON PARE-FEU WINDOWS SUR L'ORDI OU EST TA BASE DE DONNÉE (sql semble pas aimer les pare-feu) ET SUR LES ORDIS CLIENT ATTENTION A LA CONFIGURATION DE TON .NET FRAMEWORK CONFIGURATION DANS LES OUTILS D'ADMINISTRATION !!

    comme on dit, ca fait du stock mais sérieux, SQL + VB.NET ca fonctionne à merveille !!! super rapide, fluide...vraiment génial

    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
    21
           Try
                connectionstring = "Data Source=SERVEUR\SQLEXPRESS;Initial Catalog=BD;Persist Security Info=True;User ID=test;Password=1"
                Using connection As New SqlConnection(connectionstring)
                    connection.Open()
                    Dim commande As SqlCommand = connection.CreateCommand()
                    commande.CommandType = Data.CommandType.StoredProcedure
                    commande.CommandText = "RecHisto"
                    commande.Parameters.AddWithValue("@var1", var1)
                    commande.Parameters.AddWithValue("@var2", var2)
                    commande.Parameters.AddWithValue("@var3", var3)
                    commande.Parameters.AddWithValue("@var4", var3)
                    commande.Parameters.AddWithValue("@var5", var5)
                    commande.Parameters.AddWithValue("@var6", var6)
                    commande.Parameters.AddWithValue("@var7", var7)
                    commande.Parameters.AddWithValue("@var8", var8)
                    commande.ExecuteNonQuery()
                End Using
                MsgBox("transaction ajoutée à l'historique")
            Catch ex As Exception
                MsgBox("erreur sur procédure : " + ex.Message)
            End Try
    ce second code permet de pouvoir écrire dans une table (avec insert dans la procédure sql).

    bon bien ca dois légèrement résumer comment nous pouvons faire. voici en passant un site vraiment sympat avec un gars vraiment sympat qui explique vraiment bien quelques petit truc de programmation...have a lot of fun my friend

    http://www.microsoft.com/france/vision/saga-dot-net/

  5. #5
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2003
    Messages : 201
    Points : 182
    Points
    182
    Par défaut
    Fadace,

    merci pour ta réponse, c'est juste que je me dis que je vais pouvoir capter mon retun value avant d'ouvrir mon curseur pour lire mes résultats, car je dois créer un tableau avec mes résultat et je veux le faire de la bonne grosseur.

    ex :

    execute procédure stockée
    capte return value
    crée le tableau de bonne grosseur
    lis les résultats de la procédure et met dans le tableau

    alors si j'ai bien compris ce que tu m'as explique:

    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
    ALTER PROCEDURE [dbo].[Procédure1]
    	(
    		@var1in		int
                    @retourrow    int
    	)
    	
    AS
    BEGIN
    	
    SELECT     var1, var2, var3
    FROM         table1
    WHERE     (var1 = @var1in)	
    
    @retourrow = @@rowcount
    
    RETURN @retourrow
    	
    END
    merci encore pour votre aide a tous... l'union fait la force

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    merci de votre repense , je v essayer un exemple et je vous tiens au courant ...

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/02/2009, 12h26
  2. Réponses: 2
    Dernier message: 21/03/2008, 16h07
  3. [SQL SERVER 2005][ADO.NET] insertion de la valeur NULL
    Par nem&sys dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/11/2007, 11h39

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