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

Développement SQL Server Discussion :

Problème avec une procédure


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut Problème avec une procédure
    Bonjour

    J'ai écrit une procédure qui me cause des petits soucis.
    SP_ClientInsert
    La première partie écrit dans trois tables différentes. Se quel fait très bien d’ailleurs.
    La deuxième partie devrait me retourner une valeur et c’est la que j’ai des petits soucis

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    CREATE PROCEDURE [dbo].[sp_ClientInsert]
    --Variable pour TBL_Client
    @Nom nvarchar(50),
    @Prenom nvarchar(50),
    @Adresse nvarchar(50),
    @Ville nvarchar(50),
    @Province nvarchar(50),
    @TelephoneJour nvarchar(50),
    @TelephoneSoir nvarchar(50),
    @LuRegle bit,
    @Publication bit,
     
     
    --Variable pour TBL_Coordonne
    @AdresseCourriel nvarchar(50),
    @CodePostal nvarchar(50),
    @NomUsage nvarchar(50),
    @Long nvarchar(50),
    @Lat nvarchar(50),
    @MotPasse nvarchar(50)
     
     AS
    --************************************
    --Première partie
    --***********************************
    INSERT INTO TBL_Client
                          (Nom, Prenom, Adresse, Ville, Province, TelephoneJour, TelephoneSoir, LuRegle, Publication)
    VALUES     (@Nom, @Prenom, @Adresse, @Ville, @Province, @TelephoneJour, @TelephoneSoir, @LuRegle, @Publication)
     
    DECLARE @Myid int;
    set @Myid =  @@IDENTITY;--récupère l’ID_Client
     
    INSERT INTO TBL_Activation (ID_Client, Activation) VALUES     (@Myid,  NewID());
     
    INSERT INTO TBL_Coordonne (ID_Client, AdresseCourriel, CodePostal, NomUsage,  Long, Lat, MotPasse)
    VALUES (@Myid, @AdresseCourriel, @CodePostal, @NomUsage, @Long, @Lat, @MotPasse);
     
    --************************************
    --deuxième  partie
    --***********************************
     
    SELECT     Activation AS Activation, ID_Client AS ID_Client
    FROM         TBL_Activation
    WHERE     (ID_Client = @Myid)
    GO
    Appel de la procedure:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    StrSQL="exec SP_ClientInsert 'Lebrun','Guy','33 Rue Blabla','Blabla','Blabla','514-555-5555','514-999-9999','1','1','guylebrun@videotron.ca','h0h0h0',"&_
    "'ggggg','Long','Lat','123456789'"
     
    rs.open strSQL,conn
     
    If  not RS.EOF then
           response.write("Code Activation=" & Rs("Activation") &"<br>" )
    End If
    Message a l’écran

    Error Check point### 2 : 3265
    La description donnée est : Item cannot be found in the collection corresponding to the requested name or ordinal.

    Point très particulier
    1-Dans de SQL Query Analyser la procédure fonctionne bien !!

    2-J'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If  not RS.EOF then
           response.write("Code Activation=" & Rs("Activation") &"<br>" )
    End If
    Donc d’après le message le système me retourne quelque chose

    Environnement
    Windows 2003
    SQL Server 2000
    Je vous remerci pour vos suggestions.

  2. #2
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 119
    Par défaut
    Salut,

    Peut-être trouveras tu une solution dans ce post

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    Merci quand même mais non je n'ai pas trouver la solution dans se post

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 2
    Par défaut
    Bonjour,
    je pense que la procédure retourne plusieurs "recordset".
    Sans doute un pour chaque insert (sous la forme 1 row inserted approximativement).
    Pour contourner cela, 2 solutions:
    1. Parcourir tous LES recordset jusqu'au dernier via Set rs = rs.nextRecordset ( ne pas rater le dernier !)
    2. Ou mieux, d'après moi, ajouter un SET NOCOUNT ON au début de la procédure stockée de manière à ce que les INSERT ne retournent rien.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut SET NOCOUNT
    J'ai lu la documentation sur SET NOCOUNT et j'ai trouvé ceci

    Stops the message indicating the number of rows affected by a Transact-SQL statement from being returned as part of the results.

    Arrête le message indiquant le nombre de lignes affectées par une instruction Transact-SQL à partir d'être retournée comme étant une partie des résultats

    Quand on utilise la procédure a partire du SQL Analyser
    il y a un onglet qui affiche le nombre de (ROW) affecté par la procédure

    Allor j'ai insérer SET NOCOUNT ON avant le premier INSERT
    et SET NOCOUNT OFF avant le SELECT

    J'ai toujour le même message d'erreur

    Item cannot be found in the collection corresponding to the requested name or ordinal

  6. #6
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 2
    Par défaut
    Bonjour,
    j'avais l'habitude d'utiliser SET NOCOUNT ON en début de SP mais sans SET NOCOUNT OFF. Avez-vous essayé ?

    Sinon, qu'y a-t-il dans Rs(0) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    response.WRITE("première colonne de la première ligne : " & Rs(0) &"<br>" )
    Que donne Rs.Fields(0).Name ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut Merci pour les suggestion
    Merci heidyz

    Pour les suggestions elles mont aidé a en apprendre un peu plus sur le sujet.

    Premièrement oui on peu utilisé le SET NOCOUNT OFF
    Cela a pour effet de réactiver les messages dans le SQL Analyser

    EX:comme décrit plus haut SET NOCOUNT ON avant les INSERT et
    SET NOCOUNT OFF avant le SELECT :
    LE MESSAGE GENÉRÉ EST

    (1 row(s) affected)

    Seul l'opération du SELECT est affiché.

    si Je met le SET NOCOUNT ON en commentaire --SET NOCOUNT ON

    LE MESSAGE GENÉRÉ EST

    (1 row(s) affected)


    (1 row(s) affected)


    (1 row(s) affected)


    (1 row(s) affected)



    Deuxiémement Je ne connessai pas la syntax que tu ma proposé

    Rs.Fields(0).Name


    je trouve que c'est une tres bonne méthode pour debogué


    Finalement le code fonctionne tres bien maintenant

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

Discussions similaires

  1. Problème avec une procédure
    Par Thomad dans le forum SQL
    Réponses: 9
    Dernier message: 24/09/2007, 15h07
  2. Petit problème avec une procédure stockée
    Par Poulain dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 18/05/2007, 18h58
  3. [VB.NET 2.0] - Problème avec une procédure stockée
    Par Khrysby dans le forum Accès aux données
    Réponses: 1
    Dernier message: 14/05/2007, 15h25
  4. problème avec une procédure recursive
    Par vbcasimir dans le forum SQL
    Réponses: 1
    Dernier message: 10/06/2005, 16h38
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

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