首页 > 解决方案 > 雪花函数中的 DDL 语句

问题描述

我正在尝试在雪花中创建一个函数,其中包含 DDL 语句。下面是函数。

CREATE OR REPLACE function test_10252021(P1 VARCHAR(100)) returns
varchar not null language javascript as $$ try { `create or replace
temporary table temp_EMP
                as
                select * from demo_db.public.EMP
                where
                DEPT_NO='${P1}' `; return "Successful"; } catch(err) { return err.message; } $$ ;

正在创建函数,但是当我在 select 语句下面执行时,没有创建临时表。

谁能帮助我如何在函数而不是过程中执行 ddl 语句。

select  test_10252021('20');
select * from  temp_EMP;

标签: sqlfunctionsnowflake-cloud-data-platformddl

解决方案


您不能在 Snowflake JavaScript UDF 中运行 SQL,句号。没有解决方法或混乱;只是没有办法做到这一点。

如果要使用 JavaScript 运行 DDL,则需要使用存储过程。

CREATE OR REPLACE procedure test_10252021(P1 VARCHAR(100)) returns
varchar not null language javascript as 
$$ 
try { 

snowflake.execute({sqlText:`create or replace
temporary table temp_EMP
                as
                select * from demo_db.public.EMP
                where
                DEPT_NO='${P1}' `});
                
return "Successful"; 
} 
catch(err) { return err.message; } 
$$ ;

call test_10252021('20');

select * from temp_emp;

推荐阅读