sql - 过程或函数“测试”需要未提供的参数“@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
解决方案
执行此操作:在 SQL Server Management Studio 的“对象资源管理器”窗格中,右键单击您的存储过程并选择“将存储过程编写为 ->”、“执行到 ->”,然后选择“新建查询编辑器窗口”。这将为您构建一个 SQL 语句,当提供正确的参数值时,该语句将正确执行您的存储过程。
推荐阅读
- rust - 序列化结构上的子属性似乎不起作用
- sql - SQL查询比较2个搜索结果之间的列
- python - 输入包含 NaN、无穷大或对于 dtype('float32') 来说太大的值
- types - 创建依赖于其元素之一的用户定义类型
- css - Bootstrap CSS CDN 在某些系统中加载,而在其他系统中不加载
- system-verilog - 动态数组构造函数是否调用删除?
- javascript - 仅更改数组元素 3 次,重复
- javascript - 具有 nth-of-type 的 CSS 部分选择器
- javascript - 如何删除 metricsgraphs.js 折线图下方/上方的黑色区域?
- file - 在课堂上保存文件或频道的好习惯