首页 > 解决方案 > 过程或函数“测试”需要未提供的参数“@ID”

问题描述

我是了解存储过程的新手。我正在处理与此类似的问题:

CREATE PROCEDURE [Test]
(
@ID int,
@month int,
@Low int,
@standard float = 0
)
AS
IF EXISTS (SELECT 1 FROM [Table1] WHERE ID = @ID AND 
month = @month AND TYPE = 'S' AND TYPEID = @Low)
BEGIN
UPDATE [Table1] SET 
    Add = @standard
    WHERE ID = @ID AND month = @month AND TYPE = 'S' AND TYPEID = @Low
END
ELSE
BEGIN
INSERT INTO [Table1] (ID, month, Add, TYPE, TYPEID) 
    VALUES (@ID, @month, @standard, 'S', @Low)
END
GO

从这张表中运行:

ID     Month    Add    Type    TypeID
333    feb      0       T        111
333    feb      4       S        111
333    feb      -2      K        111

但我收到此错误:

'程序或函数'Test'需要参数'@ID',但未提供。'

当我尝试执行该程序时

有人可以告诉我这里发生的错误以及我能做些什么来解决它吗?我已经包含了 ID,所以我不太确定为什么会产生错误。谢谢

我这样调用程序:

USE [DB1]
GO
DECLARE @return_value int
EXEC    @return_value = [Test]
SELECT  'Return Value' = @return_value
GO

标签: sqlsql-serverstored-procedures

解决方案


执行此操作:在 SQL Server Management Studio 的“对象资源管理器”窗格中,右键单击您的存储过程并选择“将存储过程编写为 ->”、“执行到 ->”,然后选择“新建查询编辑器窗口”。这将为您构建一个 SQL 语句,当提供正确的参数值时,该语句将正确执行您的存储过程。


推荐阅读