首页 > 解决方案 > Postgresql - 函数获取行作为参数 - 如何访问该行的列?

问题描述

我有一个函数,它必须获取表员工的一行作为参数,并返回作为参数传递的员工的年龄:

CREATE OR REPLACE FUNCTION getAge(employe employee) RETURNS int AS $$
begin
  return employe.age;
END; $$
LANGUAGE PLPGSQL;

我正在尝试调用该函数

select * from getAge('(1, Alexander, 34, null)' );

但它不起作用。我期望该函数返回 34。我应该如何正确调用该函数?

标签: postgresqluser-defined-functions

解决方案


我假设您的员工表看起来像这样:

knayak=# \d employee
              Table "public.employee"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 id     | integer |           |          |
 name   | text    |           |          |
 age    | integer |           |          |
 col4   | text    |           |          |

简单地称它为

select getAge ('(1,Alexander,34,null)');
 getage
--------
     34

或者使用查询中的表别名作为输入。

select getage(emp)
from employee as emp
where e.id = 1;

select * from func()用于SET/TABLE返回函数。

演示


推荐阅读