【发布时间】:2018-04-25 16:04:33
【问题描述】:
我不熟悉存储过程。我正在处理与此类似的问题:
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
但我收到此错误:
“程序或函数“测试”需要参数“@ID”,但未提供。'
当我尝试执行程序时
有人可以告诉我这里发生的错误以及我可以做些什么来解决它吗?我已经包含了 ID,所以我不太确定为什么会产生错误。谢谢
我这样调用程序:
USE [DB1]
GO
DECLARE @return_value int
EXEC @return_value = [Test]
SELECT 'Return Value' = @return_value
GO
【问题讨论】:
-
如何调用你的存储过程?
-
那么你为什么不调用过程带参数呢?错误消息是不言自明的 - 该过程有四个参数,但您没有提供任何参数(它只在第一次发生错误时报告错误,也就是它期望
@ID的时候)。 -
EXEC @return_value = [Test]参数在哪里? -
@lad2025 这就是我找到程序的方式。我真的不太了解他们,所以我想了解
-
EXEC @return_value = [Test] @id = ?, @month = ?, @low=?, @standard=?;和交换?有实际价值
标签: sql sql-server stored-procedures