【问题标题】:Procedure or function 'Test' expects parameter '@ID', which was not supplied过程或函数“测试”需要未提供的参数“@ID”
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-06-22
    • 2011-02-05
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多