Ошибка таблицы обновления снежинки: неподдерживаемый тип для аргумента привязки - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь обновить таблицу с помощью хранимой процедуры на основе переданного Log_Id, обновить состояние и вставить текущую метку даты в таблицу (при обновлении таблицы).

Хранимая процедура:

...
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;
$$
;

... call update_table ('Test77', 47)

Но я получаю следующую ошибку:

Сообщение об ошибке: Ошибка выполнения в хранимой процедуре. UPDATE_TABLE: Неподдерживаемый тип для аргумента привязки. Sun Apr 05 2020 18:39:31 GMT-0700 (PDT) В Snowflake.execute, строка 3, позиция 30

Таблица уже содержит Log_Id 47. Столбец ETL_EXEC_END_TIME - это timestamp_ntz в таблице.

Можете ли вы подсказать, где я ошибаюсь?

Приветствия

1 Ответ

2 голосов
/ 06 апреля 2020

JavaScript формат даты не совместим с форматом даты Снежинки. Как видно из сообщения, 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;
$$
;
...