我创建了以下存储过程:
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()
,但是出现以下错误:
消息 102,级别 15,状态 1,第 6
行 "("附近的语法不正确
有没有另一种方法可以检索此 exec 语句中的当前日期?我应该编辑我的存储过程吗?
感谢您的帮助!
编辑: 这是我尝试完成的exec语句:
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
这将允许您根据需要提供值和提供默认值。