重命名存储函数的列名
Rename the column name of a stored function
我有一个 postgresql 存储过程,它是 returning 一个整数。
当我调用该函数时,结果是 returned 函数名称作为列名称。
例如函数的名称是:"add-person"。调用函数时的列名是"add-person".
有没有办法使数据库 return 具有自选列名的整数?例如 "id"?
我认为这很容易,但我现在只见树木不见森林..
编辑:
我想说的是,return 值是一个变量,如下所示:
CREATE OR REPLACE FUNCTION "scheme"."add-person"(arggivenname character varying, argfamilyname character varying) RETURNS integer AS
$BODY$
DECLARE
varResponse integer;
BEGIN
-- Operations before
INSERT INTO "scheme"."table"
(
given_name,
family_name
)
VALUES
(
arggivenname,
argfamilyname
)
RETURNING
"id"
INTO
varResponse;
-- Operations after
RETURN varResponse;
END;
$BODY$
LANGUAGE plpgsql VOLATILE COST 100;
您可以为此使用 AS 语句。这意味着:
Select add-person() AS yourcolumnname
要从函数中获得命名列,必须创建 type
和 return,type
来自函数
create type mytype as (mycolumn integer);
create or replace function ri()
returns mytype as $$
select 1;
$$ language sql;
select * from ri();
mycolumn
----------
1
编辑
或者像@pozs 评论中那样没有 type
创建就更简单了:
create or replace function ri(out mycolumn integer)
as $$
select 1;
$$ language sql;
我有一个 postgresql 存储过程,它是 returning 一个整数。 当我调用该函数时,结果是 returned 函数名称作为列名称。
例如函数的名称是:"add-person"。调用函数时的列名是"add-person".
有没有办法使数据库 return 具有自选列名的整数?例如 "id"?
我认为这很容易,但我现在只见树木不见森林..
编辑: 我想说的是,return 值是一个变量,如下所示:
CREATE OR REPLACE FUNCTION "scheme"."add-person"(arggivenname character varying, argfamilyname character varying) RETURNS integer AS
$BODY$
DECLARE
varResponse integer;
BEGIN
-- Operations before
INSERT INTO "scheme"."table"
(
given_name,
family_name
)
VALUES
(
arggivenname,
argfamilyname
)
RETURNING
"id"
INTO
varResponse;
-- Operations after
RETURN varResponse;
END;
$BODY$
LANGUAGE plpgsql VOLATILE COST 100;
您可以为此使用 AS 语句。这意味着:
Select add-person() AS yourcolumnname
要从函数中获得命名列,必须创建 type
和 return,type
来自函数
create type mytype as (mycolumn integer);
create or replace function ri()
returns mytype as $$
select 1;
$$ language sql;
select * from ri();
mycolumn
----------
1
编辑
或者像@pozs 评论中那样没有 type
创建就更简单了:
create or replace function ri(out mycolumn integer)
as $$
select 1;
$$ language sql;