是否可以在旨在插入数据的存储过程中插入当前日期时间?



我创建了以下存储过程:

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

这将允许您根据需要提供值和提供默认值。

最新更新