Snowflake Update table error: Unsupported type for binding argument
Snowflake Update table error: Unsupported type for binding argument
我正在尝试根据传递的 Log_Id 通过存储过程更新 table 并更新状态并在 table 中插入今天的日期时间戳(当 table 已更新)。
存储过程:
...
CREATE OR REPLACE PROCEDURE update_table(P_ETL_STATUS_CODE VARCHAR,P_LOG_ID FLOAT)
RETURNS FLOAT
LANGUAGE JAVASCRIPT
AS
$$
var sql_command1 = "UPDATE ETL_EXECUTION_STATUS_LOG SET ETL_STATUS_CODE = :1,ETL_EXEC_END_TIME = :2 WHERE LOG_ID = :3";
var create_stmt1 = snowflake.execute({sqlText : sql_command1,
binds: [P_ETL_STATUS_CODE,(new Date()),P_LOG_ID].map(function(x){return x === undefined ? null : x})
}
);
return P_LOG_ID;
$$
;
...
调用 update_table('Test77',47)
但是,我收到以下错误:
Error message: Execution error in stored procedure UPDATE_TABLE: Unsupported type for binding argument Sun Apr 05 2020 18:39:31 GMT-0700 (PDT) At Snowflake.execute, line 3 position 30
The table already contains Log_Id 47. Column 'ETL_EXEC_END_TIME' is timestamp_ntz in table.
你能指出我哪里出错了吗?
干杯
JavaScript 日期格式与 Snowflake 的日期格式不兼容。从消息中可以看出,JavaScript 发送了这个:
"Sun Apr 05 2020 18:39:31 GMT-0700 (PDT)"
您可以将其转换为更常见的日期格式:
我看到你想记录时间戳。那你为什么不使用 CURRENT_TIMESTAMP 命令呢?
CREATE OR REPLACE PROCEDURE update_table(P_ETL_STATUS_CODE VARCHAR,P_LOG_ID FLOAT)
RETURNS FLOAT
LANGUAGE JAVASCRIPT
AS
$$
var sql_command1 = "UPDATE ETL_EXECUTION_STATUS_LOG SET ETL_STATUS_CODE = :1,ETL_EXEC_END_TIME = CURRENT_TIMESTAMP::TIMESTAMP_NTZ WHERE LOG_ID = :2";
var create_stmt1 = snowflake.execute({sqlText : sql_command1,
binds: [P_ETL_STATUS_CODE,P_LOG_ID].map(function(x){return x === undefined ? null : x})
}
);
return P_LOG_ID;
$$
;
我正在尝试根据传递的 Log_Id 通过存储过程更新 table 并更新状态并在 table 中插入今天的日期时间戳(当 table 已更新)。
存储过程:
...
CREATE OR REPLACE PROCEDURE update_table(P_ETL_STATUS_CODE VARCHAR,P_LOG_ID FLOAT)
RETURNS FLOAT
LANGUAGE JAVASCRIPT
AS
$$
var sql_command1 = "UPDATE ETL_EXECUTION_STATUS_LOG SET ETL_STATUS_CODE = :1,ETL_EXEC_END_TIME = :2 WHERE LOG_ID = :3";
var create_stmt1 = snowflake.execute({sqlText : sql_command1,
binds: [P_ETL_STATUS_CODE,(new Date()),P_LOG_ID].map(function(x){return x === undefined ? null : x})
}
);
return P_LOG_ID;
$$
;
... 调用 update_table('Test77',47)
但是,我收到以下错误:
Error message: Execution error in stored procedure UPDATE_TABLE: Unsupported type for binding argument Sun Apr 05 2020 18:39:31 GMT-0700 (PDT) At Snowflake.execute, line 3 position 30
The table already contains Log_Id 47. Column 'ETL_EXEC_END_TIME' is timestamp_ntz in table.
你能指出我哪里出错了吗?
干杯
JavaScript 日期格式与 Snowflake 的日期格式不兼容。从消息中可以看出,JavaScript 发送了这个:
"Sun Apr 05 2020 18:39:31 GMT-0700 (PDT)"
您可以将其转换为更常见的日期格式:
我看到你想记录时间戳。那你为什么不使用 CURRENT_TIMESTAMP 命令呢?
CREATE OR REPLACE PROCEDURE update_table(P_ETL_STATUS_CODE VARCHAR,P_LOG_ID FLOAT)
RETURNS FLOAT
LANGUAGE JAVASCRIPT
AS
$$
var sql_command1 = "UPDATE ETL_EXECUTION_STATUS_LOG SET ETL_STATUS_CODE = :1,ETL_EXEC_END_TIME = CURRENT_TIMESTAMP::TIMESTAMP_NTZ WHERE LOG_ID = :2";
var create_stmt1 = snowflake.execute({sqlText : sql_command1,
binds: [P_ETL_STATUS_CODE,P_LOG_ID].map(function(x){return x === undefined ? null : x})
}
);
return P_LOG_ID;
$$
;