2016-12-22 68 views
1

这里是我的功能,执行此功能时,它会返回错误:POSTGRESQL - 错误的返回select查询

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; 

错误返回查询发生。

+0

我认为你有一个错字,你应该使用'哪里国家= $ 1',_没有单引号。 –

+0

你有什么错误? – Mureinik

+0

错误:在“整数”处或附近的语法错误 LINE 2:返回customer(customer_id integer,谢谢Tim我删除了单引号,但这个错误表明我说有语法错误,并指出整数可以帮助我进出口新的Postgres的 – kimdasuncion12

回答

1

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

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; 
+0

谢谢萨达姆我用你的编辑功能,但现在它返回<不愿透露姓名的门户网站1>。 – kimdasuncion12

+0

dvdrental =#选择国家('阿尔及利亚'); 国家 -------------------- <无名门户6> (1行) 这就是我得到的结果 – kimdasuncion12

+0

你在使用光标吗?你正在使用1或2(我写上面) –