CREATE OR REPLACE FUNCTION get_user_info ( u_email VARCHAR, u_password VARCHAR, p_name VARCHAR )
RETURNS TABLE(
user_id int,
given_name varchar(55),
family_name varchar(55),
password varchar(255),
email varchar(255),
date_of_birth date
)
AS $$
BEGIN
-- If a player display player_name and team_id
IF p_name != '' THEN
RETURN QUERY
SELECT player.user_id, player.given_name, player.family_name, player.password, player.email, player.date_of_birth,
player.player_name AS player_name, player.team_id AS team_id FROM player
WHERE player.email = u_email and player.password = u_password;
-- If not a player then display usual table
ELSE
RETURN QUERY
SELECT * FROM "user"
WHERE "user".email = u_email and "user".password = u_password;
END IF;
END $$
LANGUAGE plpgsql;
-- Get user info with arguments - email, password and player_name. If not a player pass '' as player_name
SELECT get_user_info('[email protected]', 'tommy12', 'tomkilla'); -- Player
错误:
ERROR: structure of query does not match function result type
DETAIL: Number of returned columns (8) does not match expected column count (6).
CONTEXT: PL/pgSQL function get_user_info(character varying,character varying,character varying) line 5 at RETURN QUERY
SQL state: 42804
只是想知道为什么我会收到此错误?我发誓我早些时候可以使用它,但是现在它不> _>如果我是旁观者,则查询有效
创建或替换功能get_user_info(u_email VARCHAR,u_password VARCHAR,p_name VARCHAR)返回表(user_id int,给定名称varchar(55),...
您的函数期望仅返回6列