首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用动态where子句作为参数的Snowflake UDTF

使用动态where子句作为参数的Snowflake UDTF
EN

Stack Overflow用户
提问于 2021-03-16 15:44:27
回答 1查看 111关注 0票数 0

我正在尝试创建一个UDTF,其中我计划将动态where子句作为参数传递给UDTF

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION FUNCTION_NAME(where_clause VARCHAR)
RETURNS TABLE ()
LANGUAGE JAVASCRIPT
AS
$$ var sql_command=SELECT COL1, COL2 FROM TABLE_1 JOIN TABLE_2 ON .... 
+where_clause+ GROUP BY ...;
var stmt = snowflake.createStatement( {sqlText: sql_command} ); 
var resultSet = stmt.execute(); resultSet.next();
$$

这是可能的吗?我还希望能够在函数调用期间处理参数中的引号

例如,如果调用是:

代码语言:javascript
复制
SELECT * FROM TABLE(FUNCTION_NAME('WHERE COL_1='value''));

如何处理函数调用过程中的引号。提前感谢你的帮助

EN

回答 1

Stack Overflow用户

发布于 2021-03-16 20:19:27

我想强调一下Felipe的答案。JavaScript UDTF不支持“存储过程接口”。

https://docs.snowflake.com/en/sql-reference/stored-procedures-api.html

因此不能在SQL中创建和运行动态JavaScript。它必须有"processRow“回调函数来处理作为参数传入的值,并将它们作为行返回。

https://docs.snowflake.com/en/sql-reference/udf-js-table-functions.html#basic-hello-world-examples

您可以创建一个存储过程来运行动态SQL,并以array/json的形式返回结果,但这是无效的。

对于你最初的问题,你只需要通过重复或使用斜杠来转义引号:

代码语言:javascript
复制
call FUNCTION_NAME('WHERE i=''1''');
call FUNCTION_NAME('WHERE i=\'1\'');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66650887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档