【发布时间】:2017-08-02 01:56:30
【问题描述】:
postgresql 函数中的以下函数出现问题:
我收到以下错误:
错误:查询没有结果数据的目的地 提示:如果您想丢弃 SELECT 的结果,请改用 PERFORM。 上下文:PL/pgSQL 函数 savegamelog(text,text,integer,integer,bigint,bigint,bigint,integer,integer,integer,integer) 第 15 行 SQL 语句
我的功能如下:
DECLARE
s text;
pDatatime integer;
pDataid bigint;
BEGIN
pDatatime = floor(extract(epoch from '["now()",]'::timestamp));
IF length(pTableName) > 0 THEN
UPDATE lastgamedata SET data= pData::bytea, gameid= pGameid, balance= pBalance ,bet= pBet, win= pWin, betline= pBetline, lines=pLines, datatime= pDatatime WHERE uid= pUserid;
END IF;
UPDATE gamestatistic SET totalin =totalin+pBet , totalout =totalout+pWin WHERE gameindex=pGameid;
SELECT dblink_connect('host=127.0.0.1
user=user
password=pass
dbname=dbname');
SELECT dblink_exec('UPDATE hall SET totalbetin = totalbetin+pBet , totalbetout =totalbetout+pWin WHERE id = (SELECT roomnumber FROM users WHERE uid = pUserid)');
INSERT INTO gamedata( sessionID, uid, gameID, key, balance, bet, win, betline, lines, datatime, type, denomination ) VALUES ( 0, pUserid, pGameid, 0, pBalance, pBet, pWin, pBetline, pLines, pDatatime, pType, pDenomination ) RETURNING dataid INTO pDataid;
INSERT INTO gamedata_storage ( dataid, data ) VALUES ( pDataid, pData::bytea );
return pDataid;
END;
我知道功能有问题,但我不知道如何修复它.. 任何人都可以指出我正确的方向吗..
【问题讨论】:
-
如错误消息所示将
SELECT dblink_connect(...更改为perform dblink_connect(... -
谢谢...我怎么能接受这个答案?
-
添加了答案。
-
仅供参考,dblink 的现代替代品是 FDW。 postgresql.org/docs/current/static/postgres-fdw.html
-
@ScottMarlowe 除了连接到远程数据库之外,dblink 还有其他用途,主要是autonomous transactions,您可以将 dblink 连接到您已经连接到的同一个数据库
标签: postgresql