【发布时间】:2015-02-24 14:13:42
【问题描述】:
以这些表格为基础:
create table f1_driver(
code varchar(5) not null primary key,
name varchar(10),
surname varchar(20),
dateofbirth date,
debut integer,
countryoforigin varchar(20),
points integer
);
create table f1_results (
drivercode varchar(5) not null references f1_driver,
circuitcode varchar(5) not null references f1_circuit,
racedate date,
raceposition integer,
grid integer,
primary key (drivercode, circuitcode, racedate)
);
我想创建一个用户将提供circuitcode 的函数,该函数将返回驱动程序的name 和surname,在此特定电路中raceposition 优于grid .
我写这个:
CREATE FUNCTION get(character) RETURNS SETOF f1_driver AS
$$
SELECT D.name, D.surname
FROM f1_driver D,f1_results R
WHERE R.circuitcode = $1
AND D.code=R.drivercode
AND R.raceposition<grid ;
$$ LANGUAGE SQL;
我有这个错误:
ERROR: return type mismatch in function declared to return f1_driver DETAIL: Final statement returns too few columns. CONTEXT: SQL function "get"
【问题讨论】:
标签: sql function postgresql types return