【问题标题】:Snowflake pass dynamic value binding and constant value雪花传递动态值绑定和常量值
【发布时间】:2020-04-07 14:52:00
【问题描述】:

我必须将动态值作为我的列名从循环和常量值传递给我的表。我的代码 sn-p 如下所示: 而(res.next()){ var columnname= res.getColumnValue(1); var stmt=insert into table1(column1,column2,column3) select column1,'Too Long',+列名+from table2; \var 结果= \snowflake.createStatement(stmt); \执行语句

如果我传递常量值,则会将错误作为无效标识符。我们怎样才能做到这一点?

【问题讨论】:

    标签: database snowflake-schema snowflake-task snowflake-pipe snowflake-cloud-data-platform


    【解决方案1】:

    您的程序似乎存在语法错误。请注意如何转义单引号字符。没有看到实际源代码就很难调试它,但这里有一个示例脚本来证明常量值没有什么特别之处:

    CREATE or REPLACE PROCEDURE TEST( VAR1 VARCHAR)
    RETURNS VARCHAR
    LANGUAGE JAVASCRIPT
    AS '
    var columnname = VAR1
    
    for (var i = 0; i< 5; i++){
        var stmt = snowflake.createStatement( { sqlText: "insert into table1(column1,column2,column3) select column1,''Too Long''," + columnname + " from table2" } ); 
        res = stmt.execute();
        }   
    return ''YES''
    ';
    

    为了测试上述过程,我创建了两个表并在 table2 中插入一行:

    create table table1(column1 varchar,column2 varchar,column3 varchar);
    
    create table table2(column1 varchar,columnX varchar);
    
    insert into table2 values ('testing','secretcol');
    

    我用“columnX”变量调用程序,我不想编写更复杂的程序来从第三个表中读取列名:

    call test( 'columnX' );
    

    当我查询 table1 时,我看到 5 条记录。每行包含:'testing'、'Too long' 和 'secretcol' 值。

    从表 1 中选择 *;

    【讨论】:

    • var stmt = snowflake.createStatement({ sqlText: insert into table1(column1,column2,column3,column4) select column1,Too Long,``, + columnname + ` from table2 where column1=1 and +column_name += 'abc'` }); stmt.execute();
    • 需要 sn-p 看起来上面的东西 var stmt = snowflake.createStatement({ sqlText: insert into table1(column1,column2,column3,column4) select column1,Too Long,``, + columnname + ` from table2 where column1=1 and +column_name += ' abc'`}); stmt.execute();
    猜你喜欢
    • 2020-07-13
    • 2021-10-04
    • 2020-03-17
    • 1970-01-01
    • 2011-03-21
    • 2021-06-19
    • 2021-12-08
    • 2020-11-11
    • 1970-01-01
    相关资源
    最近更新 更多