【问题标题】:Snowflake Update table error: Unsupported type for binding argument雪花更新表错误:绑定参数的类型不受支持
【发布时间】:2020-07-17 23:30:24
【问题描述】:

我正在尝试通过基于传递的 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;
$$
;

... 调用 update_table('Test77',47)

但是,我收到以下错误:

错误消息:存储过程 UPDATE_TABLE 中的执行错误:绑定参数的类型不受支持 Sun Apr 05 2020 18:39:31 GMT-0700 (PDT) At Snowflake.execute,第 3 行位置 30

该表已包含 Log_Id 47。“ETL_EXEC_END_TIME”列是表中的 timestamp_ntz。

你能建议我哪里出错了吗?

干杯

【问题讨论】:

    标签: snowflake-cloud-data-platform snowflake-schema


    【解决方案1】:

    JavaScript 日期格式与 Snowflake 的日期格式不兼容。从消息中可以看出,JavaScript 发送了这个:

    “2020 年 4 月 5 日星期日 18:39:31 GMT-0700 (PDT)”

    您可以将其转换为更常见的日期格式:

    https://stackoverflow.com/a/21482470/12550965

    我看到你想记录时间戳。那么为什么不使用 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;
    $$
    ;
    

    【讨论】:

    • 非常感谢@Gokan Atil 的回复,现在可以正常工作了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    相关资源
    最近更新 更多