【问题标题】:Lack of table output functionality in Snowflake Stored ProceduresSnowflake 存储过程中缺少表输出功能
【发布时间】:2021-04-15 22:43:38
【问题描述】:

我正在重新设计我们公司的 API 以使用来自 SQL Server 的 Snowflake。我们的第一个直接障碍是我们现有的 SQL Server 存储过程返回表输出,而 Snowflake 不允许这种类型的输出。我不想完全重新设计所有东西,所以我在想:

  1. 以与 SQL Server 相同的方式重建我的 Snowflake 存储过程
  2. 退出前,将输出转储到临时表中。
  3. 我的返回值是表名。
  4. 现在我可以从临时表中返回数据了。

还有其他人对如何处理这个问题有更好的建议吗?

我知道编码,使用 python 之类的东西会更容易做到这一点,但是,我不想维护另一个 python 应用程序只是为了在雪花中检索数据。

【问题讨论】:

    标签: stored-procedures snowflake-cloud-data-platform


    【解决方案1】:

    Snowflake 文档不仅描述了技术细节,还描述了使用模式,此案例已在以下位置进行了描述:

    Overview of Stored Procedures

    有一些间接方式可以使用存储过程的返回值:

    • 您可以在另一个存储过程中调用该存储过程;外部存储过程中的 JavaScript 可以检索和存储 内部存储过程的输出。但请记住, 外部存储过程(和每个内部存储过程)仍然 无法向调用者返回多个值。

    • 您可以调用存储过程,然后调用 RESULT_SCAN 函数并将为存储生成的语句 ID 传递给它 过程。

    • 您可以将结果集存储在临时表或永久表中,并在从存储过程返回后使用该表 打电话。

    • 如果数据量不太大,可以在一个VARIANT中存储多行多列(例如,作为JSON值) 并返回该 VARIANT。

    【讨论】:

      猜你喜欢
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      • 2022-12-10
      • 1970-01-01
      • 2022-06-18
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多