Snowflake 中的存储过程能否提供一个表值输出,就像我们在 SQL Server 中得到的一样

Posted

技术标签:

【中文标题】Snowflake 中的存储过程能否提供一个表值输出,就像我们在 SQL Server 中得到的一样【英文标题】:Can stored procedures in Snowflake provide a table valued out put, like we get in SQL Server 【发布时间】:2020-07-20 20:01:01 【问题描述】:

Snowflake 中的存储过程能否像我们在 SQL Server 中那样提供一个有值输出的表?我不想使用存储过程将其存储在表或视图中,而是想直接调用存储过程并在 API 中使用存储过程的输出。

【问题讨论】:

【参考方案1】:

您可以使用 SQL UDTF

 CREATE OR REPLACE FUNCTION func1(PRFL_NAME VARCHAR)
RETURNS TABLE (KEY VARCHAR(16777216), VALUE VARCHAR(16777216))
LANGUAGE SQL
AS 
$$
SELECT '1','2'
$$;

select * from table(func1('somevalue'));

https://docs.snowflake.com/en/sql-reference/udf-table-functions.html

【讨论】:

你好@Iqra Ijaz,同意!提到的方法,但在 UDF 中,输入参数是强制性的,这可能不是必需的,并且每次基础表结构更改时,我都必须修改在表顶部创建的所有 UDF 的返回表。我正在寻找可用的选项,我们在其中包装一组 SQL 命令并从其中的表中获取输出。

以上是关于Snowflake 中的存储过程能否提供一个表值输出,就像我们在 SQL Server 中得到的一样的主要内容,如果未能解决你的问题,请参考以下文章

如何使用存储过程在 redshift 上创建 10000 个表?

使用 Snowflake 中的任务调用存储过程

实体框架存储过程表值参数

SQL Server存储过程中使用表值作为输入参数示例

Snowflake - 系统/内置存储过程

使用 PetaPoco 将表值参数传递给存储过程