因为过程需要参数,所以不会发生插入

时间:2013-12-14 17:07:03

标签: sql-server sql-server-2008-r2

我有这个查询,它只需要进行简单的插入。但是我遇到了这个错误:

  

Msg 8146,Level 16,State 2,Procedure InsertEducationCategory,Line 0
  过程InsertEducationCategory没有提供参数和参数。

知道为什么会这样吗?

IF EXISTS (SELECT name FROM sys.procedures WHERE name = 'InsertEducationCategory') 
DROP PROCEDURE InsertEducationCategory
GO

CREATE PROCEDURE InsertEducationCategory
AS
BEGIN
   INSERT INTO Education_Category(Category_ID, Category_Name) VALUES(NEWID(), N'کاردانی')
   INSERT INTO Education_Category(Category_ID, Category_Name) VALUES(NEWID(), N'کارشناسی')
   INSERT INTO Education_Category(Category_ID, Category_Name) VALUES(NEWID(), N'کارشناسی ارشد')
   INSERT INTO Education_Category(Category_ID, Category_Name) VALUES (NEWID(), N'دکترا')
END
GO

EXEC InsertEducationCategory GO

由于

2 个答案:

答案 0 :(得分:0)

您正在调用一个没有参数的存储过程,但是在调用它时会提供参数。

如果它有参数,它看起来像:

CREATE PROCEDURE InsertEducationCategory
     @Parameter1 nvarchar(5), -- or whatever type
     @Parameter2 int -- could be a different type...
AS

此时,您可以拨打InsertEducationCategory('abcde', 16),但按照您定义的方式,只有拨打InsertEducationCategory()才有意义。

答案 1 :(得分:0)

" GO"在最后一行被解释为SP的参数。只需将该行修改为:

EXEC InsertEducationCategory
GO