我正在用雪花写下面的函数。
create OR REPLACE function myTestFunc(tbl_name VARCHAR, Column_Name varchar, id VARCHAR)
returns varchar
as
$$
select Column_Name from tbl_name WHERE Column_Name=id
$$
;
如何传递表和列名作为输入参数,并在查询中使用这些参数作为表和列名。在这里,参数被视为字符串文本,而不是表或列名。是否有任何方法可以在用户定义的函数中实现这一点。
谢谢
3条答案
按热度按时间yk9xbfzb1#
您可以使用支持snowflake对象的snowflake过程来执行动态查询。
https://docs.snowflake.com/en/sql-reference/stored-procedures-usage.html
如果表和列受到限制,可以使用以下方法:
z4bn682m2#
关于snowflake udf,有一件基本的事情需要您了解,以便正确设置您的期望值—它实际上不是编程语言意义上的函数,而是更像一段sql代码,在执行sql时展开。因此,在运行sql时,所有使用的udf都会被实际代码替换,然后运行。
这给使用udf可以做什么和不能做什么带来了一些限制,从这个Angular 看udf时,动态查询是没有意义的事情之一。
正如gokhan在上面所说的,使用动态查询的正确方法是snowflake过程
7bsow1i63#
这是一种使查询动态化的方法。我测试了它,它正在工作。
您可以这样调用函数:
谢谢