存储过程CREATE PROC spBorrowBookInsertdeclare @BorrowDate DATETIME
SET @BorrowDate =GETDATE() ;
declare @ReturnDate DATETIME  
SET @ReturnDate =DATEADD(MM,1,GETDATE());@pBorrowBookID    INT OUTPUT,
@pReaderID        INT ,
@pBookID          INT ,
@pBorrowDate      DATETIME = @BorrowDate ,
@pReturnDate      DATETIME = @ReturnDate ,
@pFactReturnDate  DATETIME ASBEGIN
INSERT INTO BorrowBook
(
ReaderID   ,
BookID      ,
BorrowDate   ,
ReturnDate  ,
FactReturnDate 
)
VALUES
(
@pReaderID ,
@pBookID      ,
@pBorrowDate   ,
@pReturnDate   ,
@pFactReturnDate  
) SET @pBorrowBookID = IDENT_CURRENT('BorrowBook');
END----------------------------------------------------
GOCREATE PROC spBorrowBookUpdateByIDdeclare @BorrowDate DATETIME  
SET @BorrowDate=GETDATE();
DECLARE @ReturnDate DATETIME  
SET @ReturnDate=DATEADD(MM,1,GETDATE());@pBorrowBookID    INT ,
@pReaderID        INT ,
@pBookID          INT ,
@pBorrowDate      DATETIME =@BorrowDate,
@pReturnDate      DATETIME =@ReturnDate,
@pFactReturnDate  DATETIME ASBEGIN
UPDATE BorrowBook
SET
ReaderID  = @pReaderID,
BookID  =   @pBookID ,
BorrowDate  = @pBorrowDate ,
ReturnDate  = @pReturnDate,
FactReturnDate= @pFactReturnDate
WHERE BorrowBookID =@pBorrowBookID END
----------------------------------------------------错误消息 156,级别 15,状态 1,过程 spBorrowBookInsert,第 6 行
关键字 'declare' 附近有语法错误。
消息 102,级别 15,状态 1,过程 spBorrowBookInsert,第 11 行
'@pBorrowBookID' 附近有语法错误。
消息 137,级别 15,状态 2,过程 spBorrowBookInsert,第 31 行
必须声明标量变量 "@pReaderID"。
消息 137,级别 15,状态 1,过程 spBorrowBookInsert,第 38 行
必须声明标量变量 "@pBorrowBookID"。
消息 156,级别 15,状态 1,过程 spBorrowBookUpdateByID,第 4 行
关键字 'declare' 附近有语法错误。
消息 102,级别 15,状态 1,过程 spBorrowBookUpdateByID,第 9 行
'@pBorrowBookID' 附近有语法错误。
消息 137,级别 15,状态 2,过程 spBorrowBookUpdateByID,第 21 行
必须声明标量变量 "@pReaderID"。
本意是想在插入和更新的时候 有一个默认的时间值 就定义了两个变量 去的系统时间 在赋值给字段变量但是总提示有语法错误  不知道问题出在哪里    希望各位大哥给指点指点 错在哪里 应该怎么写  谢谢

解决方案 »

  1.   

    CREATE PROC spBorrowBookInsert
    --在这不能这样定义 语法都不对
    --declare @BorrowDate DATETIME
    --SET @BorrowDate =GETDATE() ;
    --declare @ReturnDate DATETIME  
    --SET @ReturnDate =DATEADD(MM,1,GETDATE());@pBorrowBookID    INT OUTPUT,
    @pReaderID        INT ,
    @pBookID          INT ,
    @pBorrowDate      DATETIME = @BorrowDate ,
    @pReturnDate      DATETIME = @ReturnDate ,
    @pFactReturnDate  DATETIME ASBEGIN
    INSERT INTO BorrowBook
    (
    ReaderID   ,
    BookID      ,
    BorrowDate   ,
    ReturnDate  ,
    FactReturnDate 
    )
    VALUES
    (
    @pReaderID ,
    @pBookID      ,
    @pBorrowDate   ,
    @pReturnDate   ,
    @pFactReturnDate  
    ) SET @pBorrowBookID = IDENT_CURRENT('BorrowBook');
    END--执行的时候直接把GETDATE() 和DATEADD(MM,1,GETDATE())当参数传进去。
      

  2.   

    CREATE PROC spBorrowBookInsert
    --在这不能这样定义 语法都不对
    --declare @BorrowDate DATETIME
    --SET @BorrowDate =GETDATE() ;
    --declare @ReturnDate DATETIME  
    --SET @ReturnDate =DATEADD(MM,1,GETDATE());@pBorrowBookID    INT OUTPUT,
    @pReaderID        INT ,
    @pBookID          INT ,
    @pBorrowDate      DATETIME ,
    @pReturnDate      DATETIME ,
    @pFactReturnDate  DATETIME ASBEGIN
    INSERT INTO BorrowBook
    (
    ReaderID   ,
    BookID      ,
    BorrowDate   ,
    ReturnDate  ,
    FactReturnDate 
    )
    VALUES
    (
    @pReaderID ,
    @pBookID      ,
    @pBorrowDate   ,
    @pReturnDate   ,
    @pFactReturnDate  
    ) SET @pBorrowBookID = IDENT_CURRENT('BorrowBook');
    END--执行的时候直接把GETDATE() 和DATEADD(MM,1,GETDATE())当参数传进去。
      

  3.   

    或者
    CREATE PROC spBorrowBookInsert
    --在这不能这样定义 语法都不对
    --declare @BorrowDate DATETIME
    --SET @BorrowDate =GETDATE() ;
    --declare @ReturnDate DATETIME  
    --SET @ReturnDate =DATEADD(MM,1,GETDATE());@pBorrowBookID    INT OUTPUT,
    @pReaderID        INT ,
    @pBookID          INT ,
    @pBorrowDate      DATETIME=GETDATE(),
    @pReturnDate      DATETIME=DATEADD(MM,1,GETDATE()),
    @pFactReturnDate  DATETIME ASBEGIN
    INSERT INTO BorrowBook
    (
    ReaderID   ,
    BookID      ,
    BorrowDate   ,
    ReturnDate  ,
    FactReturnDate 
    )
    VALUES
    (
    @pReaderID ,
    @pBookID      ,
    @pBorrowDate   ,
    @pReturnDate   ,
    @pFactReturnDate  
    ) SET @pBorrowBookID = IDENT_CURRENT('BorrowBook');
    END--执行的时候直接把GETDATE() 和DATEADD(MM,1,GETDATE())当参数传进去。
      

  4.   

    CREATE PROC spBorrowBookInsert
    (
    @pBorrowBookID    INT OUTPUT,
    @pReaderID        INT ,
    @pBookID          INT , @pFactReturnDate  DATETIME 
    )
    AS
    DECLARE  @pBorrowDate      DATETIME  ,@pReturnDate      DATETIME  
    declare @BorrowDate DATETIME
    SET @BorrowDate =GETDATE() ;
    declare @ReturnDate DATETIME  
    SET @ReturnDate =DATEADD(MM,1,GETDATE());
    SELECT @pBorrowDate=@BorrowDate,@pReturnDate=@ReturnDateBEGIN
    INSERT INTO BorrowBook
    (
    ReaderID   ,
    BookID      ,
    BorrowDate   ,
    ReturnDate  ,
    FactReturnDate 
    )
    VALUES
    (
    @pReaderID ,
    @pBookID      ,
    @pBorrowDate   ,
    @pReturnDate   ,
    @pFactReturnDate  
    )  SET @pBorrowBookID = IDENT_CURRENT('BorrowBook');
    END----------------------------------------------------
    GOCREATE PROC spBorrowBookUpdateByID
    (
    @pBorrowBookID    INT ,
    @pReaderID        INT ,
    @pBookID          INT ,
    @pFactReturnDate  DATETIME 
    )
    ASDECLARE @pBorrowDate DATETIME,@pReturnDate  DATETIMEdeclare @BorrowDate DATETIME  
    SET @BorrowDate=GETDATE();
    DECLARE @ReturnDate DATETIME  
    SET @ReturnDate=DATEADD(MM,1,GETDATE());SELECT @pBorrowDate=@BorrowDate,@pReturnDate=@ReturnDateBEGIN
    UPDATE BorrowBook
    SET
    ReaderID  = @pReaderID,
    BookID  =   @pBookID ,
    BorrowDate  = @pBorrowDate ,
    ReturnDate  = @pReturnDate,
    FactReturnDate= @pFactReturnDate
    WHERE BorrowBookID =@pBorrowBookID END
    只可這樣用
      

  5.   

    --改成如此
    CREATE PROC spBorrowBookInsert
    @pBorrowBookID    INT OUTPUT,
    @pReaderID        INT ,
    @pBookID          INT ,
    @pBorrowDate      DATETIME default getdate() ,
    @pReturnDate      DATETIME  default DATEADD(MM,1,GETDATE()),
    @pFactReturnDate  DATETIME AS
      

  6.   

    如果希望插入默认值,可以:
    INSERT INTO BorrowBook
    (
    ReaderID   ,
    BookID      ,
    BorrowDate   ,
    ReturnDate  ,
    FactReturnDate 
    )
    VALUES
    (
    @pReaderID ,
    @pBookID      ,
    GETDATE()    ,
    DATEADD(MM,1,GETDATE())   ,
    @pFactReturnDate  

    直接在INSERT语句中使用日期函数,没必要再定义这2个变量了。
    如果你是从UI或其他地方传进来两个日期参数,那需要先定义2个变量并赋值,再INSERT。