【问题标题】:Postgres function with dblink带有 dblink 的 Postgres 函数
【发布时间】: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


【解决方案1】:

按照错误信息说明,更改

SELECT dblink_connect('host=127.0.0.1
user=user
password=pass
dbname=dbname');

PERFORM dblink_connect('host=127.0.0.1
user=user
password=pass
dbname=dbname');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    相关资源
    最近更新 更多