【问题标题】:Inserting parameters of stored procedure into a table using Merge in snowflake使用雪花中的合并将存储过程的参数插入表中
【发布时间】:2020-09-16 00:18:58
【问题描述】:

我正在尝试使用 sql 中的合并函数将存储过程的参数值插入到表中。参数由数据库和模式名称组成。我为此编写了一个存储过程,但是我不明白我在哪里做错了。 这是我的尝试:

CREATE TABLE TABL(DBName VARCHAR, SCName VARCHAR) // creating table

REATE OR REPLACE PROCEDURE repo(DB VARCHAR,SC VARCHAR) //need to push DB, SC INTO TABL
    RETURNS type
    LANGUAGE JAVASCRIPT
    AS
    $$      
       //Inserting parameters into table as values but didn;t work  
        var sql_command = "merge TABL as t using (SELECT +"DB"+ as database,+"SC"  as schema) as s on t.DBName = s.DB and t.SCName = s.schema when matched then update set t.DBName = t.DBName when not matched then insert (DBName, SCName) VALUES ('"+DB+"','"+SC +"')";
        snowflake.execute({sqlText: sql_command});

    return type;
    $$;

【问题讨论】:

    标签: javascript sql stored-procedures snowflake-cloud-data-platform


    【解决方案1】:

    您可以使用绑定:

    CREATE TABLE TABL(DBName VARCHAR, SCName VARCHAR); // creating table
    
    CREATE OR REPLACE PROCEDURE repo(DB VARCHAR,SC VARCHAR) 
        RETURNS string
        LANGUAGE JAVASCRIPT
        AS
        $$      
            var sql_command = `merge into TABL as t 
                                using (SELECT :1 as database,:2  as schema) as s 
                                on t.DBName = s.database 
                                and t.SCName = s.schema 
                                when matched then update 
                                set t.DBName = t.DBName 
                                when not matched then insert 
                                (DBName, SCName) VALUES (:1,:2)`;
            snowflake.execute({sqlText: sql_command, binds: [DB, SC]});
    
        return 'success';
        $$;
        
        call repo('a', 'b');
    

    请参阅https://docs.snowflake.com/en/sql-reference/stored-procedures-usage.html#binding-variables 了解更多信息。

    【讨论】:

    • 帮我通过临时表向下游传递参数;使用这个。谢谢。投票赞成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    相关资源
    最近更新 更多