【发布时间】:2020-08-26 03:52:40
【问题描述】:
ALTER PROCEDURE UpdateStatus
@HealthStatus NVARCHAR (MAX),
@Risk NVARCHAR (MAX),
@Job NVARCHAR(MAX),
@JobStatus NVARCHAR(MAX)
AS
BEGIN
SET @HealthStatus = (SELECT [Health Status] FROM [tbl1])
SET @Risk = (SELECT [Risk Level] FROM [tbl1])
SET @Job = (SELECT [Job] FROM [tbl1])
SET @JobStatus = (SELECT [Detail status] FROM [tbl1])
IF @HealthStatus = 'Y'
BEGIN
UPDATE [tbl1]
SET [Overall Status] = 'Pass'
WHERE [Health Status] = @HealthStatus
END
ELSE IF @HealthStatus = 'N'
BEGIN
UPDATE [tbl1]
SET [Overall Status] = 'Fail'
WHERE [Health Status] = @HealthStatus
END
ELSE IF @Risk = 'No Risk'
BEGIN
UPDATE [tbl1]
SET [Overall Status] = 'Pass and No Risk'
WHERE [Risk Level] = @Risk
END
ELSE IF @Risk = 'Not Applicable'
BEGIN
UPDATE [tbl1]
SET [Overall Status] = 'Pass and No Risk'
WHERE [Risk Level] = @Risk
END
IF @Risk = 'High Risk' AND (@HealthStatus = 'U' OR @HealthStatus = '')
IF @Job = ''
BEGIN
UPDATE [tbl1]
SET [Overall Status] = @JobStatus
WHERE [Health Status] = @HealthStatus AND [Risk Level] = @Risk AND [Job] = @Job
END
ELSE IF @Job = ''
BEGIN
UPDATE [tbl1]
SET [Overall Status] = 'Undefined'
WHERE [Health Status] = @HealthStatus AND [Risk Level] = @Risk AND [Job] = @Job
END
END
GO
我编写了一个存储过程来根据同一个表中其他列的输入来更新整体状态,我将在 SQL Server 中执行该过程。但是,我遇到了:
过程或函数“UpdateStatus”需要参数“@HealthStatus”,但未提供。
我已使用 SELECT 函数将值分配给参数。我是存储过程的新手,我不确定我在哪里做错了。
我只在sql server里面写了调用代码
EXEC UpdateStatus
【问题讨论】:
-
你需要向我们展示调用代码,这就是错误所在。
-
除非有默认值,否则需要传入参数!
标签: sql sql-server stored-procedures