2012-12-19 54 views
0

我试图执行一个存储过程,但得到以下错误:过程或函数“SP _ ***”需要参数“@”,但未提供

Procedure or function 'SP_DELETE_DESIGN_PARAMETERS' expects parameter '@DESIGN_ID', which was not supplied.

下面是我的存储过程。

我想在SQL中执行它需要结果在表中。

CREATE PROCEDURE SP_DELETE_DESIGN_PARAMETERS 
    @DESIGN_ID INT 
AS 
BEGIN 
    Delete From Design_Parameters where Design_ID = @DESIGN_ID 
END 

exec SP_DELETE_DESIGN_PARAMETERS 

我知道我错过了一些非常简单的点。我将不胜感激任何帮助。

我使用SQL Server 2008 R2和Visual Studio 2010与VB.Net

谢谢:)

+3

作为一个侧面说明了ID:不使用'sp_'前缀为您的存储过程。该前缀已由Microsoft保留供其自己使用,并使用它[导致性能下降](http://sqlserverpedia.com/blog/sql-server-bloggers/stored-procedure-performance-using-%E2%80% 9Csp_%E2%80%9D-prefix-%E2%80%93-myth-or-fact /)存储过程! –

+0

@marc_s谢谢你的提示。我会做一个没有它。 – Joy1979

+0

您的参数是必需的,为什么你没有参数调用过程?程序结束和呼叫之间的“GO”在哪里?另请参阅http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix –

回答

0

当您执行存储过程时,您需要将它传递给它所期望的@DESIGN_ID参数。

EXEC SP_DELETE_DESIGN_PARAMETERS 123 

,其中123是要传递到存储过程

+0

感谢您的帮助。我在Design_ID列中有1000行,如果我需要显示整个数据,我应该使用:exec SP_DELETE_DESIGN_PARAMETERS @DESIGN_ID only?请指教。 – Joy1979

+0

如果你想删除所有1000条记录,你需要调用你的过程1000次。正如你现在写的那样,它一次只能删除1条记录。 –

3
exec SP_DELETE_DESIGN_PARAMETERS @DESIGN_ID = 5 
exec SP_DELETE_DESIGN_PARAMETERS 5 

how to pass parameters to a stored procedure阅读起来。你正在询问一个参数但不提供它。

+0

感谢您的帮助。我在Design_ID列中有1000行,如果我需要显示整个数据,我应该使用:exec SP_DELETE_DESIGN_PARAMETERS @DESIGN_ID only?请指教。 – Joy1979

+0

@ Joy1979是你试图“显示整个数据”还是你想删除数据?你的程序说了一件事,但你在说另一件事。 –

+0

@Aaron Bertrand:对打字错误抱歉。我的意思是删除1000个数据。谢谢 – Joy1979

相关问题