【发布时间】:2020-12-17 15:43:18
【问题描述】:
我正在尝试将上次更新日期发送到我的控制表。我按照 Msft 指南进行 incremental 加载,但在使用上次更新日期调用存储过程时出错。
我可以使用简单的插入语句将值插入水印列,但在使用存储过程时总是失败。我得到的错误信息是:
SQL Error [102] [S0001]: Incorrect syntax near '1/1/2010 12:00:00 AM'.
表定义:
CREATE TABLE Admin.dbo.Data_Load_Params (
Identifier varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
Source_Table varchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
Target_Table varchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
Table_Type varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
Last_Update_Column varchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
Schedule varchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
Watermark datetime NULL
) GO;
我的存储过程:
CREATE PROCEDURE USP_WriteWatermarkValue (@WatermarkValue datetime, @TableName varchar(50))
AS
BEGIN
UPDATE Data_Load_Params
SET [Watermark] = @WatermarkValue
WHERE [Target_Table] = @TableName
END
然后我运行:
exec USP_Write_Watermark('2020-12-09T17:16:15Z', 'Journal_Headers')
但也使用了日期的变体,例如:
exec USP_Write_Watermark('1/1/2010 12:00:00 AM', 'Journal_Headers')
这个问题让我发疯了,因为我什至从 Msft 文档中复制了示例代码。
【问题讨论】:
-
你在使用 Azure SQL 吗?
-
嗨@Cobus van Rooyen,如果我的回答有误,请纠正我。