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 200] Problème avec une stored procedure


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 49
    Par défaut [sql 200] Problème avec une stored procedure
    Bonjour à tous,

    Je voudrais faire une stored dynamique et pouvoir recupérer le resultat d'un première requête dynamique de ma stored pour le reutiliser plus tard dans cette même stored

    voici mon code
    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
     
     
    ALTER PROCEDURE [dbo].[GetroleEffectif]
     
    @idu as int,
    @nomr as nvarchar(50) 
     
    AS
    BEGIN 
    declare @idp as int
     
    declare @sql as nvarchar(500)
     
    set @sql = 'select idpersonne from ' + @nomr + ' where id' + @nomr + ' = ' + @idu;
    print @sql
    	 set @idp=( @sql  ) 
     
    print @idp
     
    select hdu.nomrole,a.nomrole,hda.nomrole,v.nomrole,e.nomrole
    	from personne p
    left outer join helpdeskuser hdu on p.idpersonne = hdu.idpersonne
    left outer join helpdeskadmin hda on p.idpersonne = hda.idpersonne
    left outer join admin a on a.idpersonne =p.idpersonne
    left outer join viewer v on v.idpersonne = p.idpersonne
    left outer join enduser e on e.idpersonne = p.idpersonne
    where p.idpersonne = @sql
     
    END
    J'ai aussi essayeé en faisant directement @idp = ('select idpersonne from ' + @nomr + ' where id' + @nomr + ' = ' + @idu); mais il me renvoit l'erreur que voici


    Msg 245, Level 16, State 1, Procedure GetroleEffectif, Line 14
    Conversion failed when converting the nvarchar value 'select idpersonne from admin where idadmin = ' to data type int.

  2. #2
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SET @sql = 'select idpersonne from ' + @nomr + ' where id' + @nomr + ' = ' + CAST(@idu as nvarchar(50))

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 49
    Par défaut
    tout d'abord merci de ta réponse,

    Mais j'ai toujours un problème je n'arrive pas à execute ma requete @sql pour mettre le résultat dans @idp et quand je met set @idp=(exec (@sql)) ou sans les paranthèse il me renvoit une erreur sur le exec

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par marc_dd
    tout d'abord merci de ta réponse,

    Mais j'ai toujours un problème je n'arrive pas à execute ma requete @sql pour mettre le résultat dans @idp et quand je met set @idp=(exec (@sql)) ou sans les paranthèse il me renvoit une erreur sur le exec
    Essaie le code que je t'ai donné.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 49
    Par défaut
    Merci aussi de ta réponse je ne l'ai vue que quand j'ai répondu
    mais le problème c'est que @nomr est un parametreque j'tuilise pour le nom de la table et aussi le 'id'+@nomr
    quand je fais ta solution il me dit de déclaré une variable de type table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Msg 1087, Level 15, State 2, Procedure GetroleEffectif, Line 17
    Must declare the table variable "@nomr".
    en fait le where id+@nomr représente le nom d'un champ de la tables qui sera nomé en fonction du nom de ma table ex si ma table s'appelle mariee
    ça sera where idmarié=@idp

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 49
    Par défaut
    Voilà j'ai résolu mon problème avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    execute sp_executesql @idp = @sql
    Merci à vous et bonne journee

    @+

  7. #7
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Là tu esssaie de stocker une chaine de caractères et tu n'éxécute pas ta requête

    Il faut plutot faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @idp = (select idpersonne from @nomr where id @nomr =  @idu)

Discussions similaires

  1. [Server SQL 2000] Erreur sur une "stored procedure"
    Par hunteshiva dans le forum MS SQL Server
    Réponses: 17
    Dernier message: 18/03/2011, 15h41
  2. Réponses: 4
    Dernier message: 02/10/2009, 13h41
  3. [SQL Server]Problème avec une requête récursive
    Par evans dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/04/2006, 20h16
  4. Problème avec une requete SQL sous access
    Par Luther13 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 14/12/2005, 10h39
  5. [QUERY ANALYSER]problème au lancement d'une stored procedure
    Par gregorian dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/11/2005, 16h39

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