POSTGRESQL - 返回选择查询时出错

标签 postgresql

<分区>

这是我的函数,执行这个函数时返回错误:

create or replace function country(varchar) 

returns customer(customer_id integer,
                 first_name varchar,                       
                  last_name varchar) as $$


 select customer_id, customer.first_name, customer.last_name 

 from customer 

     inner join address on customer.address_id = address.address_id 
     inner join city on address.city_id = city.city_id 
     inner join country on city.country_id = country.country_id 

where country = '$1';

$$  
language sql;

返回查询时出错。

最佳答案

为此解决方案使用创建类型:

create type ct as (customer_id integer, first_name varchar, last_name varchar)

现在创建函数

create or replace function country(varchar) 

returns ct as $$

select customer_id, first_name, last_name from customer 
     inner join address on customer.address_id = address.address_id 
     inner join city on address.city_id = city.city_id 
     inner join country on city.country_id = country.country_id    
where country = $1;

$$ language sql;

或者使用这个

create or replace function country(varchar) 

returns table(customer_id integer,
                 first_name varchar,                       
                  last_name varchar) as $$ 

 select customer_id, customer.first_name, customer.last_name 

 from customer 

     inner join address on customer.address_id = address.address_id 
     inner join city on address.city_id = city.city_id 
     inner join country on city.country_id = country.country_id 

where country = $1;

$$language sql;

关于POSTGRESQL - 返回选择查询时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41276258/

相关文章:

sql - 将数据修改 CTE 中的 INSERT 语句与 CASE 表达式组合

ruby-on-rails - 从其 json 表示形式获取 IPAddr 实例

mysql - 将 Postgres 序列重置为下一个 ID

macos - 在 Mac 中通过网络访问 postgresql 服务器

postgresql - postgres 的 sql 类型(映射)无效

postgresql - 根据当前用户组动态更改数据库 View

api - postgres 中的 OAuth 2.0 授权性能

sql严格多于query

sql - 仍然无法使用 JOIN 在 SQL 中删除

SQL百分比查询