我创建了以下存储过程。
CREATE PROCEDURE dbo.InsertTutees
@StudentID INT = NULL,
@FirstName VARCHAR(50) = NULL,
@Surname VARCHAR(50) = NULL,
@Major VARCHAR(50) = NULL,
@Timestamp DATETIME = NULL
AS
BEGIN
SET NOCOUNT ON
INSERT INTO dbo.Tutees (StudentID, FirstName, Surname, Major, Timestamp)
VALUES (@StudentID, @FirstName, @Surname, @Major, @Timestamp)
END
GO
EXEC dbo.InsertTutees
@StudentID = 2,
@FirstName = 'Sarah',
@Surname = 'Smith',
@Major = 'Science',
@Timestamp = '2013-12-12';
但是我想用当前时间戳代替时间戳值 我已经尝试了 GETDATE()
但我得到以下错误。
Msg 102, Level 15, State 1, Line 6 ')' 附近的语法不正确。
在这个执行语句中是否有其他的方法来检索当前日期?我应该编辑我的存储过程吗?
谢谢你的帮助
EDIT:这就是我试图完成的执行语句。
EXEC dbo.InsertTutees
@StudentID = 2,
@FirstName = 'Sarah' ,
@Surname = 'Smith' ,
@Major = 'Science' ,
@Timestamp = getdate()
你可以使用一个中间变量。
DECLARE @dt datetime =GETDATE()
EXEC dbo.InsertTutees
@StudentID = 2,
@FirstName = 'Sarah' ,
@Surname = 'Smith' ,
@Major = 'Science' ,
@Timestamp = @dt
如果你查一下 在文件中,默认值必须是一个常量或NULL。为了拥有一个相当于GETDATE()的默认值,你需要在proc中编写一些类似这样的代码。
IF @Timestamp IS NULL
BEGIN
SET @Timestamp = GETDATE();
END
这样既可以提供一个值,也可以根据需要提供一个默认值。