snowflake 创建存储过程以通过参数化列名称从 table 插入数据

snowflake create stored procedure to insert data from a table by parametrizing column names

我有一个如下所示的存储过程。我想对列名进行参数化,以便它可以重复使用。

CREATE OR REPLACE PROCEDURE NEW() 
    RETURNS string
    LANGUAGE JAVASCRIPT
    AS
    $$      
        let sql_command = `insert into TABLE_NEW
                            (ADR_LN_1,ADR_LN_2)
                          select 
                            ADR_LN_1,ADR_LN_2
                          from TABLE_OLD`;
        snowflake.execute({sqlText: sql_command});

    return 'success';
    $$;
    
call NEW();

我尝试了以下查询,但它不起作用

CREATE OR REPLACE PROCEDURE NEW(COL1 VARCHAR, COL2 VARCHAR) 
    RETURNS string
    LANGUAGE JAVASCRIPT
    AS
    $$      
        let sql_command = `insert into TABLE_NEW
                            (COL1,COL2)
                          select 
                            COL1,COL2
                          from TABLE_OLD`;
        snowflake.execute({sqlText: sql_command});

    return 'success';
    $$;
    
call NEW('ADR_LN_1','ADR_LN_2');

您缺少 ${} 让 JS 字符串模板工作:

CREATE OR REPLACE PROCEDURE NEW(COL1 VARCHAR, COL2 VARCHAR) 
    RETURNS string
    LANGUAGE JAVASCRIPT
    AS
    $$      
        let sql_command = `insert into TABLE_NEW
                            (${COL1},${COL2})
                          select 
                            ${COL1},${COL2}
                          from TABLE_OLD`;
        snowflake.execute({sqlText: sql_command});

    return 'success';
    $$;
    
call NEW('ADR_LN_1','ADR_LN_2');