如何调试“过程或函数'X'的存储过程错误需要参数'@Y',它没有提供”?

问题描述:

我的脚本如下如何调试“过程或函数'X'的存储过程错误需要参数'@Y',它没有提供”?

ALTER Procedure [dbo].[spSearch_Stock] 
    (@KeyW varchar(50), 
    @Empty int) 
AS 
BEGIN 
    SET @Empty = (SELECT COUNT(Customer) FROM tbl_Stock) 

    IF @Empty > 0 
     SELECT 
      StockID, Abb, LotNo, InvoiceNo, TeaState, Customer, Broker, 
      TeaGrade, Pkgs, NetWeight, TotWeight, PriceUSD, CurrencyRate, 
      TotalAmtUSD, BrokerageUSD 
     FROM 
      tbl_Stock 
     WHERE 
      (Abb) LIKE '%'[email protected]+'%' 
     ORDER BY 
      StockID ASC, Abb ASC 
    ELSE 
     SELECT 
      'null' as StockID, 'null' as Abb, 'null' as LotNo, 
      'null' as InvoiceNo, 'null' as TeaState, 'null' as Customer, 
      'null' as Broker, 'null' as TeaGrade, 'null' as Pkgs, 
      'null' as NetWeight, 'null' as TotWeight, 
      'null' as PriceUSD, 'null' as CurrencyRate, 
      'null' as TotalAmtUSD, 'null' as BrokerageUSD 
END 

我得到这个错误:

Procedure or function 'spSearch_Stock' expects parameter '@Empty', which was not supplied

+1

您可能会打电话给您的SP,不通过两个参数。 – TheGameiswar

+0

标记您正在使用的dbms。 (这是产品特定的SQL。) – jarlh

+0

哎呀@marc_s,只需要修复标题 - 你拿出了有用的位,并离开“请帮我一个错误”;-)' – halfer

您的存储过程有两个参数,看来你是不及格都..

而且我看你在查询中设置了@Empty而不考虑值是否通过,所以我建议更改您的存储过程,如下所示:

ALTER Procedure [dbo].[spSearch_Stock] 
    (@KeyW varchar(50)) 
AS 
BEGIN 
    Declare @empty int 

    select @empty = COUNT(Customer) FROM tbl_Stock 

    -- Body of stored procedure 
END