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 :

Problem de return en sql server 2005


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 13
    Points : 13
    Points
    13
    Par défaut Problem de return en sql server 2005
    salut,
    je suis débutant dans le demain sql server, et j ai besoin d une procédure stocké qui retourne le code lot selon une date et un code produit qui seront récupérer par les deux requette!

    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
    ALTER PROCEDURE dbo.frstlot
    (
    	@codecmd int,
    	@codeprd varchar(1),
    	@datel datetime,
    	@datecmd datetime,
    	@codel int output
    	)
     
    AS
    begin
    select @datecmd from commandes where CodeCmd =@codecmd
    select @codeprd = CodeProd from Compositions where CodeCmd =@codecmd
    select @codel = CodeLot from Lot where DateProd > @datecmd and CodeProd=@codeprd
     
    RETURN @codel
    end
    mais quand j essaye l excution, elle me donne ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Procedure or Function 'frstlot' expects parameter '@codeprd', which was not supplied.
    No rows affected.
    (0 row(s) returned)
    @codel = 
    @RETURN_VALUE = 
    Finished running [dbo].[frstlot].

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    1 - L'erreur en question stipule qu'il manque au moins un paramètre dans ton appel à la procédure.

    2 - Si tu veux utiliser RETURN, tu te limites à une valeur de retour. Personnellement, le RETURN dans mes procédures est réservé aux codes d'erreur.

    Si tu veux utiliser le RETURN, tu n'as pas besoin d'output parameter.

    Exec régulier:

    Exec avec capture du return

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DECLARE @v_RETURN int
     
    EXEC @v_RETURN = EXEC MaProc param1
    Si tu veux utiliser un output parameter, alors il faut que tu le définisse, comme tu l'as fait pour @code1.

    Quand tu appelles ta procédure, il faut assigner la valeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DECLARE @v_CODE_1 int
     
    EXEC frstlot @codecmd, @codeprd, @datel datetime, @datecmd, @v_CODE_1 output
     
    PRINT '@v_CODE_1 = ' + CAST(@v_CODE_1 AS varchar(50))

    3 - Pour des fins de clareté dans ton code, donne des préfixes à tes variable selon qu'elles sont locales ou des paramètres.

    ex: @v_Ma_Variable = locale, @p_Ma_Variable = paramètre.

    4 - Si tu veux connaître la bonne syntaxe pour appeler une procédures, tu Right Click sur la procédure dans l'explorer de Management Studio > Script Procedure As > Execute To > New Query Editor Window

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 896
    Points : 53 126
    Points
    53 126
    Billets dans le blog
    6
    Par défaut
    Votre procédure gagnerait énormément à être écrite avec des requêtes comme 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
    19
    ALTER PROCEDURE dbo.frstlot
    (
    	@codecmd int,
    	@codeprd varchar(1),
    	@datel datetime,
    	@datecmd datetime,
    	@codel int output
    	)
    AS
    begin
     
    SELECT @codel  = CodeLot 
    from Lot l
         INNER JOIN commandes c
               ON l.DateProd > C.datecomd
         INNER JOIN Compositions s
               ON l.CodeProd = s.CodeProd 
    WHERE c.CodeCmd = @codecmd
      AND s.CodeCmd =@codecmd
    A +

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    merci a vous tous

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

Discussions similaires

  1. probleme d'installation de sql server 2005
    Par Msysteme dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/09/2011, 17h57
  2. Probleme affichage avec datagrid & sql server 2005
    Par abelmasengu dans le forum ASP.NET
    Réponses: 1
    Dernier message: 09/03/2009, 11h48
  3. probleme de connexion sur sql server 2005
    Par grome dans le forum Accès aux données
    Réponses: 2
    Dernier message: 18/02/2009, 14h19
  4. problem d'installaion de SQL Server 2005 CE Server Tools
    Par redenil dans le forum Réplications
    Réponses: 1
    Dernier message: 13/01/2009, 12h33
  5. [Requete] probleme de synthaxe sous SQL SERVER 2005
    Par sanosuke dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/05/2007, 11h24

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