Sha*_*777 2 sql datetime stored-procedures azure
我在 Azure 上的示例数据库中创建了一个存储过程:
CREATE PROCEDURE SalesLT.InsertOrderHeader(@OrderDate AS DATETIME=NULL, @DueDate AS DATETIME=NULL, @CustomerID AS INT=NULL)
AS
DECLARE @SalesOrderID INT = NEXT VALUE FOR SalesLT.SalesOrderNumber
IF @OrderDate IS NULL
BEGIN
SET @OrderDate = GETDATE()
END
INSERT INTO SalesLT.SalesOrderHeader(SalesOrderID,OrderDate,DueDate,CustomerID,ShipMethod)
VALUES (@SalesOrderID,@OrderDate,@DueDate,@CustomerID,'CARGO TRANSPORT 5')
PRINT @SalesOrderID
Run Code Online (Sandbox Code Playgroud)
这创建得很好,但当我尝试调用它时,我想要从现在起一周后有个约会:
EXEC SalesLT.InsertOrderHeader @DueDate= DATEADD(dd,7,getDate()) , @CustomerID=1
Run Code Online (Sandbox Code Playgroud)
这不起作用。错误表明,它在显示“dd”的地方期望 ( 或 select,对于 get date 的右括号也是如此。有什么问题吗?
EXEC:
[ [ @parameter = ] { value
| @variable [ OUTPUT ]
| [ DEFAULT ]
}
]
[ ,...n ]
Run Code Online (Sandbox Code Playgroud)
请仔细注意,它接受值并且接受变量。它不接受的是表达式。
您需要将DATEADD逻辑移至单独的行并将结果值存储在变量中。
DECLARE @dt datetime
SET @dt = DATEADD(day,7,getDate())
EXEC SalesLT.InsertOrderHeader @DueDate= @dt , @CustomerID=1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3079 次 |
| 最近记录: |