也许我在这里是个白痴,但我试图将默认的日期时间值分配给 MS SQL Server 2005 中的存储过程,但无法让它工作,例如:
CREATE PROCEDURE MyProcedure
(
@MyInteger INT = 123,
@MyDateTime DATETIME = CONVERT(DATETIME, '1753-01-01 00:00:00', 20)
)
AS
BEGIN ... (snip)
因此,如果未指定 @MyDateTime
输入参数,则默认情况下应使用“1753-01-01 00:00:00”,但我收到错误...
Incorrect syntax near the keyword 'CONVERT'.
我可以让它很好地适用于整数。我做错了什么?
<小时/>编辑:根据下面的答案,我最终在存储过程本身中使用了以下内容:
CREATE PROCEDURE MyProcedure
(
@MyInteger INT = 123,
@MyDateTime DATETIME = NULL
)
AS
BEGIN
SET NOCOUNT ON
SET @MyDateTime = COALESCE(@MyDateTime, CONVERT(DATETIME, '1753-01-01 00:00:00', 20))
...snip...
END
最佳答案
@MyDateTime DATETIME ='1753-01-01 00:00:00'
或者在存储过程中您可以执行以下操作:
SELECT @MyDateTime = (SELECT CONVERT(DATETIME, '1753-01-01 00:00:00', 20))
该错误是由于调用 CONVERT 造成的,默认参数时无法执行此操作。
关于SQL Server - 将默认日期时间值分配给存储过程中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6413277/