一文详解数仓 GassDB(DWS) 函数出参带出方式
![一文详解数仓GassDB(DWS) 函数出参带出方式](https://static001.geekbang.org/infoq/41/41709eda8aa69de1bc609c6e4b6e3704.png)
本文分享自华为云社区《GassDB(DWS)功能 -- 函数出参 #【玩转PB级数仓GaussDB(DWS)】》,作者:譡里个檔 。
DWS 的 PL/pgSQL 函数/存储过程中有一个特殊的语法 PERFORM 语法,用于执行语句但是丢弃执行结果的场景,常用于一些状态判断的场景。但是客户往往会不当使用 PERFORM 语法,导致业务逻辑出错,最常见的就是使用 PERFORM 执行带有出参的函数。
已知函数 inner 定义如下
复制代码
函数 f_outer 定义如下,函数体中调用函数 inner,把函数的出参赋值给变量 a, b
复制代码
但是实际执行的时候发现函数 inner 的出参没有正确赋值(预期值为 a = 1 b = 11)。
复制代码
出现这种问题的原因是 PERFORM 语法会执行 SQL 语句,但是会抛弃执行结果,导致函数出参没有赋值
DWS 中常用的带出函数出参的方式有以下三种:
方式 1:函数出参的方式赋值
复制代码
方式 2:动态查询语句方式赋值
复制代码
方式 3:SELECT .. INTO 赋值
复制代码
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/af8dc7a041fa6694f16d475b3】。文章转载请联系作者。
评论