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 :

[SQL2005] Procédure stockée


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 37
    Par défaut [SQL2005] Procédure stockée
    Bonjour,

    Je souhaiterais créer une procédure stockée qui effectue une recherche en fonction de deux paramètres. Le paramètre 1 n'est jamais NULL mais le problème c'est que si mon paramètre 2 est NULL, le résultat de ma requête ne donnera rien c'est pourquoi j'ai voulu écrire ceci:

    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].[lstsos] 
    	-- Add the parameters for the stored procedure here
    	@Param1 nvarchar(255),
    	@Param2 nvarchar(255)
    AS
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
     
        -- Insert statements for procedure here
     
    IF (@Param2 is NULL) THEN
    select designation + ' -- ' + cast(month(date_livraison) as nvarchar) + ' -- ' + cast(montant_commande as nvarchar) as newcol, sos_id from sos where demandeur_demande = (select demandeur_code from sos_demandeur where demandeur_name = @param1)
    ELSE;
    select designation + ' -- ' + cast(month(date_livraison) as nvarchar) + ' -- ' + cast(montant_commande as nvarchar) as newcol, sos_id from sos where demandeur_demande = (select demandeur_code from sos_demandeur where demandeur_name = @param1 and designation like '%' + @param2 + '%')
    END IF
    END
    Je ne vois pas trop ce qui cloche, cependant j'obtiens les erreurs suivantes:

    Msg 156, Level 15, State 1, Procedure lstsos, Line 18
    Incorrect syntax near the keyword 'THEN'.
    Msg 156, Level 15, State 1, Procedure lstsos, Line 20
    Incorrect syntax near the keyword 'ELSE'.
    Msg 156, Level 15, State 1, Procedure lstsos, Line 23
    Incorrect syntax near the keyword 'END'.
    Quelqu'un sait-il d'oû peut provenir le problème ?

    Merci beaucoup

  2. #2
    Expert confirmé
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Par défaut
    Déjà en Transact SQL il n'y a pas de point virgule en fin de ligne. Et puis ça se finit par GO

    Il faudrait un minimum regarder la doc qui est plutôt bien faite: msdn sql server: ALTER PROCEDURE

  3. #3
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 37
    Par défaut
    Que tu les mettes ou non, cela ne change absolument rien de toute façon...

  4. #4
    Expert confirmé
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Par défaut
    Il n'y a pas de THEN en Transact SQL : msdn sql server: IF... THEN

  5. #5
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 37
    Par défaut
    effectivement

    Merci beaucoup à toi, je ne devais pas regarder la bonne doc ^^

  6. #6
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Tu pourrais initialiser ton deuxième paramètre à '%'.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     @Param2 nvarchar(255) = '%',
    SI je puis me permettre : donne un nom plus parlant à tes paramètres.
    Par exemple @sRequestorName pour le premier et @sDesignation pour le second.

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

Discussions similaires

  1. [SQL2005] Optimiser une procédure stockée
    Par david_chardonnet dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/12/2006, 16h48
  2. [SQL2005][débutant]Trigger ou procédure stockée
    Par DebutantDotNet dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 03/10/2006, 12h15
  3. [SQL2005] soucis procédures stockées
    Par f_bobo dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/09/2006, 12h13
  4. [SQL2005][TSQL] Procédure Stockée
    Par Cape31 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/08/2006, 10h58
  5. [SQL2005][TSQL] Débuguage Procédure Stockées
    Par BibiTheo dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 08/03/2006, 18h16

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