【问题标题】:how to access input variables in redshift SQL function by name如何按名称访问redshift SQL函数中的输入变量
【发布时间】:2021-04-25 13:34:18
【问题描述】:

我正在尝试创建一个 Redshift SQL 函数并尝试通过其名称访问输入变量。

create or replace 
function sql_udf_test (inp1 int, inp2 int)
 returns int
stable
as $$
select inp1+inp2
$$ language sql;

错误

SQL 错误 [500310] [42703]:亚马逊无效操作:列 “inp1”不存在;

但是,当我尝试通过索引访问输入变量时,它工作正常。

create or replace 
function sql_udf_test (inp1 int, inp2 int)
 returns int
stable
as $$
select $1+$2
$$ language sql;

select sql_udf_test(1, 2);

输出:

3

任何建议,可能是我犯了一些初学者的错误。

【问题讨论】:

    标签: sql plsql amazon-redshift user-defined-functions


    【解决方案1】:

    amazon documentation中明确提到,在SQL UDF中,必须使用$1、$2等来引用函数的输入参数,参数的名称可以在Python UDF中使用。

    在 Python UDF 中,使用参数名称引用参数。在一个 SQL UDF,使用 $1、$2 等引用参数,基于 参数列表中参数的顺序。

    【讨论】:

    • 它还声明,不应有任何参数名称:对于 Python UDF,输入参数名称和数据类型的列表。对于 SQL UDF,数据类型列表,没有参数名称
    • 是的@astentx。完美!!
    • @astentx 谢谢我明白了,实际上函数是用 sql 中的输入变量名称编译的,这就是为什么我很困惑,可能有办法访问。
    • @Popeye 当然,我错过了您在文档中提到的要点。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多