Sql server 如何插入参数和声明存储过程
我正试图编写一个存储过程来获取usersID和Month这两个参数 现在我有了这个,但我想把它们放到变量中,比如参数。我怎么做Sql server 如何插入参数和声明存储过程,sql-server,Sql Server,我正试图编写一个存储过程来获取usersID和Month这两个参数 现在我有了这个,但我想把它们放到变量中,比如参数。我怎么做 ALTER PROCEDURE [dbo].[SP_TaskObjDashboard] AS BEGIN DECLARE @UserID INT = 20 DECLARE @Dateinput DATETIME SELECT COALESCE(@UserID, users.UserID) AS TC,
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
这应该做到:
ALTER PROCEDURE [dbo].[SP_TaskObjDashboard]
@UserID INT, @Dateinput datetime
AS
...
另外,不要忘记删除将变量更改为参数的DECLARE语句
我想……你的错误是 1。“无法为局部变量指定默认值。” 2。必须声明标量变量“@UserID”。 Sol:-
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
有关详细信息…此类型的错误..您可以单击此链接
您的程序定义应该是
ALTER PROCEDURE [dbo].[SP_TaskObjDashboard]
@UserID INT, @Dateinput datetime
AS
如果您不确定某个东西的语法是什么,那么文档应该是您的第一个调用端口之一。SQL Server的文档非常完整,并且有一个用户社区来帮助维护和更新它。文章中也经常包含一些示例,使事情更容易理解。旁注:您不应该在存储过程中使用sp_
前缀。微软已经这样做了,而且你确实有可能在将来的某个时候发生名称冲突。最好只是简单地避免使用sp.
并使用其他东西作为前缀,或者根本不使用前缀!