【问题标题】:How to return some value from procedures in BigQuery and capture the returned value?如何从 BigQuery 中的过程返回一些值并捕获返回的值?
【发布时间】:2021-06-30 19:02:06
【问题描述】:

我已经在 BigQuery 中编写了一个过程 (proc a),现在我正在编写另一个过程 (proc b),我想在 (proc b) 中调用 (proc a),并且我想在 (proc) 中定义一个变量b) 将由调用 (proc a) 返回的值分配。

例如:这只是为了明确我的问题。我期待这样的事情->

create procedure a()

begin

(SOME BODY)

(return integer value(or any other value type))

end;

create procedure b()

begin

declare i int64;

set i = call a();------------------------(What will be the exact syntax of this statement)

end;


project_name = p1
dateset_name = d1

提前谢谢你。

【问题讨论】:

    标签: stored-procedures google-bigquery return-value procedure


    【解决方案1】:

    定义过程参数时可以使用三种参数模式

    • IN 表示参数只是过程的输入。您可以为 IN 参数指定变量或值表达式。

    • OUT 表示参数是过程的输出。过程启动时,OUT 参数初始化为 NULL。您必须为 OUT 参数指定一个变量。

    • INOUT 表示参数既是过程的输入又是过程的输出。您必须为 INOUT 参数指定一个变量。 INOUT 参数可以在过程主体中作为变量引用并分配新值。

    如果 IN、OUT 和 INOUT 均未指定,则将参数视为 IN 参数。

    因此,在您的情况下,您可以使用 OUT 或 INOUT 来获取调用脚本 / proc 的值

    您可以在CREATE PROCEDURE statement上阅读更多内容

    【讨论】:

    • 感谢米哈伊尔的回复。我在这里有一个查询.....我只有固定数量的参数(假设只有 3 个参数,都是 IN 类型),所以,有没有办法将第 4 个参数定义为默认参数和输出参数.. ..或类似的东西。所以,我将第 4 个变量定义为 out 参数,但不想在调用过程时包含第 4 个参数(一种默认参数)......我的第二个是关于 set i = call a() 的语法;------------------------(这条语句的确切语法是什么)
    • 我的答案中的链接包含任何后续问题的所有详细信息,例如您的上述评论。您最初问题的重点是如何在调用脚本中使用输出参数,我认为它得到了回答:o)
    猜你喜欢
    • 2017-05-02
    • 1970-01-01
    • 2014-01-23
    • 2016-09-09
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多