0
votes

Comment insérer des paramètres et déclarer la procédure stockée

J'essaie d'écrire une procédure stockée pour obtenir 2 paramètres de usersideid et mois.

À l'heure actuelle, je l'ai, mais je veux mettre ceux à variables comme des paramètres comme des paramètres. Comment puis-je le faire? P>

ALTER PROCEDURE [dbo].[SP_TaskObjDashboard]
AS
BEGIN  
    DECLARE @UserID INT = 20 
    DECLARE @Dateinput DATETIME

    SELECT 
        COALESCE(@UserID, users.UserID) AS TC, 
        Objtask.Pace, Objtask.Month, salesobj.SalesObjectiveMonth
    FROM 
        TBL_User AS users
    JOIN 
        TBL_Objectives_Task AS Objtask ON users.UserID = Objtask.Consultant
    LEFT JOIN 
        TBL_SalesObjective AS salesobj ON users.UserID = salesobj.UserID
    WHERE 
        users.IsActive = 1  
        AND MONTH('2019-08-25') = MONTH(Objtask.Month) 
        AND users.UserID = COALESCE(@UserID, users.UserID)
END


2 commentaires

Créer une procédure (transact-sql) - Exemples: Passage des paramètres - Création d'une procédure avec les paramètres d'entrée si vous n'êtes pas sûr de la syntaxe de quelque chose est La documentation devrait être l'un de votre premier port d'appels. La documentation de SQL Server est très complète et a une communauté d'utilisateurs qui aide à la maintenir et à le mettre à jour. Il existe également des exemples très souvent contenus dans l'article, ce qui facilite la compréhension des choses.


Note latérale: pas Utilisez le préfixe SP _ pour vos procédures stockées. Microsoft a Réservé ce préfixe pour son propre usage ( Voir Nommer des procédures stockées ) , et vous courez le risque d'un nom de nom à l'avenir. C'est également mauvais pour votre performance de procédure stockée . Il est préférable de simplement éviter tout simplement sp _ et utiliser quelque chose d'autre comme préfixe - ou pas de préfixe du tout!


3 Réponses :


0
votes

Ceci devrait le faire:

ALTER PROCEDURE [dbo].[SP_TaskObjDashboard]
  @UserID INT, @Dateinput datetime
AS
...


0 commentaires

0
votes

Je pense ... Votre erreur était ....

1. "Impossible d'attribuer une valeur par défaut à une variable locale." Strong> p>

2. "Doit déclarer la variable scalaire" @userid "." Strong> p>

SOL: - strong> p>

ALTER PROCEDURE [dbo].[SP_TaskObjDashboard]
AS
BEGIN  
    DECLARE @UserID INT
    SET @UserID=20

    DECLARE @Dateinput DATETIME

    SELECT 
        COALESCE(@UserID, users.UserID) AS TC, 
        Objtask.Pace, Objtask.Month, salesobj.SalesObjectiveMonth
    FROM 
        TBL_User AS users
    JOIN 
        TBL_Objectives_Task AS Objtask ON users.UserID = Objtask.Consultant
    LEFT JOIN 
        TBL_SalesObjective AS salesobj ON users.UserID = salesobj.UserID
    WHERE 
        users.IsActive = 1  
        AND MONTH('2019-08-25') = MONTH(Objtask.Month) 
        AND users.UserID = COALESCE(@UserID, users.UserID)
END


0 commentaires

1
votes

Votre définition de procédure doit être xxx


0 commentaires