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
3 Réponses :
Ceci devrait le faire:
ALTER PROCEDURE [dbo].[SP_TaskObjDashboard] @UserID INT, @Dateinput datetime AS ...
Je pense ... Votre erreur était ....
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
Votre définition de procédure doit être
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 b> Utilisez le préfixe
SP _ code> pour vos procédures stockées. Microsoft a Réservé ce préfixe pour son propre usage ( Voir Nommer des procédures stockées I>) , 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 simplementsp _ code> et utiliser quelque chose d'autre comme préfixe - ou pas de préfixe du tout!