postgresql Apache AGE -使用多个参数创建函数

83qze16e  于 2023-02-04  发布在  PostgreSQL
关注(0)|答案(3)|浏览(118)

我查看了create_vlabel函数的内部,注意到要获取graph_namelabel_name,需要使用graph_name = PG_GETARG_NAME(0)label_name = PG_GETARG_NAME(1)。由于这两个变量也作为参数传递,所以我想,如果我想在此函数中再添加一个参数,那么我需要使用PG_GETARG_NAME(2)来获取这个参数,并在函数的逻辑中使用它。我的假设正确吗?或者我需要做更多的调整来做到这一点?

u1ehiz5o

u1ehiz5o1#

您是正确的,但是您还需要更改“age--1.2.0.sql”文件中的函数签名,更新参数:

CREATE FUNCTION ag_catalog.create_vlabel(graph_name name, label_name name, type new_argument)
    RETURNS void
    LANGUAGE c
AS 'MODULE_PATHNAME';

请注意,所有参数都以“Datum”结构的形式出现,PG_GETARG_NAME会自动将其转换为“Name”结构。例如,如果需要参数int 32,则应使用PG_GETARG_INT32(index_of_the_argument)表示字符串,使用PG_GETARG_CSTRING(n),依此类推。

enyaitl3

enyaitl32#

是的,你的假设是正确的。如果你想在PostgreSQL的create_vlabel函数中添加一个额外的参数,你可以使用PG_GETARG_NAME(2)来获取第三个参数的值。请记住,你可能需要对函数的逻辑进行额外的修改来正确处理新参数。

luaexgnf

luaexgnf3#

Fahad Zaheer和Marco Souza给出的答案是正确的,但是你也可以创建一个Variadic函数,用它你可以有n个参数,但是一个缺点是你必须自己检查类型。你可以找到更多的信息here。你也可以检查许多Apache Age函数,例如agtype_to_int2。

相关问题