如何纠正SQL Server 2005这类错误

时间:2011-03-02 11:22:51

标签: sql-server-2005

create procedure usbinsertbookDatainto
   @Bookno Numeric,
   @studentno Numeric,
   @currentnoofcopiesavaillable varchar(300),
   @Issuedate datetime,
   @Duedate  datetime
AS
 BEGIN
  Insert into tbluseraccount
        (
          Bookno,
          studentno,
          currentnoofcopiesavaillable,
          Issuedate,
          Duedate
         )
         values
          (
           @Bookno,
           @studentno,
           @currentnoofcopiesavillable,
           @Issuedate,
           @Duedate
            )          
END

我得到的错误是:

  

Msg 156,Level 15,State 1,Procedure   usbinsertbookDatainto,8号线   关键字附近的语法不正确   'AS'。
  Msg 137,Level 15,State 2,   程序usbinsertbookDatainto,Line   22个
  必须声明标量变量   “@currentnoofcopiesavillable”。

2 个答案:

答案 0 :(得分:0)

删除第一次出现的“(”和“ 从你的变量列表中删除最后一个“,”

create procedure usbinsertbookDatainto

 @Bookno Numeric,
 @studentno Numeric,
 @currentnoofcopiesavaillable varchar(300),
 @Issuedate datetime,
 @Duedate  datetime

AS
 BEGIN
  Insert into tbluseraccount
        (
          Bookno,
          studentno,
          currentnoofcopiesavaillable,
          Issuedate,
          Duedate
         )
         values
          (
           @Bookno,
           @studentno,
           @currentnoofcopiesavillable,
           @Issuedate,
           @Duedate
            )          
END

答案 1 :(得分:0)

这只是一个错字:在存储过程的参数列表中,您有:

create procedure usbinsertbookDatainto
   ... 
   @currentnoofcopiesavaillable varchar(300),

并在您使用的代码中:

     values(.....
@currentnoofcopiesavillable,

所以要更清楚:

Defined:  @currentnoofcopiesavaillable 
Used:     @currentnoofcopiesavillable

确保输入与声明中使用的相同的变量名称!