雪花函数中的 DDL 语句

Posted

技术标签:

【中文标题】雪花函数中的 DDL 语句【英文标题】:DDL statement in snowflake function 【发布时间】:2021-12-10 15:16:06 【问题描述】:

我正在尝试在其中包含 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;

【问题讨论】:

为什么要在 UDF 函数中使用 DDL? 【参考方案1】:

您不能在 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;

【讨论】:

以上是关于雪花函数中的 DDL 语句的主要内容,如果未能解决你的问题,请参考以下文章

可以从雪花中的函数调用存储过程吗

如何使用主键和分区列创建雪花表?示例 DDL?

雪花; SQL 编译错误:无效的对象类型:GET_DDL 上的“EXTERNAL_TABLE”(“DATABASE”,“MyDb”)

如何获取雪花中执行存储过程的名称?

如何评估雪花存储过程中的语句

默认日期雪花:无效标识符“日期”