雪花函数中的 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 语句的主要内容,如果未能解决你的问题,请参考以下文章
雪花; SQL 编译错误:无效的对象类型:GET_DDL 上的“EXTERNAL_TABLE”(“DATABASE”,“MyDb”)