Postgresql 如何将Select*从函数返回到严格变量
我试图在函数中返回表中的一行,如果没有任何一行或多行,则会引发异常,这一点很重要。出于这个原因,我使用了Postgresql 如何将Select*从函数返回到严格变量,postgresql,Postgresql,我试图在函数中返回表中的一行,如果没有任何一行或多行,则会引发异常,这一点很重要。出于这个原因,我使用了SELECT*INTO STRICT。然而,我似乎找不到正确的返回方式。想知道是否有人知道返回单行的正确方法 我知道我可以把支票分开,让它工作,但我很好奇是否有办法让它工作 CREATE OR REPLACE FUNCTION GameInfo.getAllPlayerInfo( playerID GameInfo.Player.PID%Type) RETURNS TABLE (PI
SELECT*INTO STRICT
。然而,我似乎找不到正确的返回方式。想知道是否有人知道返回单行的正确方法
我知道我可以把支票分开,让它工作,但我很好奇是否有办法让它工作
CREATE OR REPLACE FUNCTION GameInfo.getAllPlayerInfo(
playerID GameInfo.Player.PID%Type)
RETURNS TABLE (PID VARCHAR,Name VARCHAR, Email VARCHAR,Password VARCHAR) AS
$$
DECLARE
found_player GameInfo.Player%ROWTYPE;
BEGIN
SELECT * INTO STRICT found_player FROM GameInfo.Player WHERE Player.PID =
$1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE EXCEPTION 'PID % not found';
WHEN TOO_MANY_ROWS THEN
RAISE EXCEPTION 'PID % not unique';
RETURN found_player;
END;
$$ LANGUAGE plpgsql
STABLE
SECURITY DEFINER;
您的函数声明为
返回表
,因此在PL/pgSQL中,您需要使用返回下一个…
返回一行
在异常处理之前需要移动return语句。当前,如果找到一行,则函数不会返回任何内容
您还可以使用返回setof
来简化函数声明,因此不需要指定所有列
创建或替换函数GameInfo.getAllPlayerInfo(playerID GameInfo.Player.PID%类型)
返回gameinfo.player的设置
作为$$
声明
找到\u玩家GameInfo。玩家%ROWTYPE;
开始
选择*
成为一名优秀的球员
来自GameInfo.Player
其中Player.PID=playerid;
返回下一个找到的玩家--