【问题标题】:Run plpgsql program to update the data in table运行 plpgsql 程序更新表中的数据
【发布时间】:2013-05-09 16:05:02
【问题描述】:

我正在使用 Postgres 8.4。我想使用 plpgsql 和游标更新数据。当我尝试运行 plpgsql 时,它会产生错误。

CREATE OR REPLACE FUNCTION updateScore() 
RETURNS void AS
$$
DECLARE
singleTopicCriteriaPercentage   DECIMAL(6,10);
sitePercentage          DECIMAL(6,10);
singleSiteCriteriaPercentage    DECIMAL(6,10);
totalSocre          DECIMAL(6,10);

cursor1 CURSOR FOR select id from sitereviews order by id;
cursor2 CURSOR FOR select weight into rating from sitereviews_ratingcriteria where site_id = id;

id              sitereviews.id%TYPE;
weight              sitereviews_ratingcriteria.weight%TYPE;

BEGIN
singleTopicCriteriaPercentage := (10 / 120) * 100;
sitePercentage : 0.0;
singleSiteCriteriaPercentage := 0.0;
totalSocre := 0.0;

OPEN cursor1;
LOOP
FETCH cursor1 INTO id;
EXIT WHEN NOT FOUND;
    totalSocre := 0.0;

    OPEN cursor2;
    LOOP
    FETCH cursor2 INTO weight;
    EXIT WHEN NOT FOUND;
        sitePercentage := singleTopicCriteriaPercentage * weight;
        singleSiteCriteriaPercentage :=  (sitePercentage / 100) * 10;
        totalSocre := singleSiteCriteriaPercentage + totalSocre;
    END LOOP;
    CLOSE cursor2;

    update sitereviews set weight = : round(totalSocre)  WHERE CURRENT OF cursor1;
END LOOP
CLOSE cursor1;
END;
$$ LANGUAGE 'PLPGSQL'

以下是尝试运行此程序时的错误:

ERROR: could not load library "C:/Program Files/PostgreSQL/8.4/lib/plpgsql.dll": The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail.
 SQL state: 58P01

【问题讨论】:

  • PostgreSQL 不支持 pl/sql - 希望你的意思是 pl/pgsql。此外,这不是完整的函数定义,您还没有显示错误消息。甚至没有人可以开始帮助你。
  • 报错信息中显示的DLL(C:/Program Files/PostgreSQL/8.4/lib/plpgsql.dll)是否存在?
  • 是的,plpgsql.dll 存在
  • PostgreSQL 做版本检查 - 所以这个库应该来自 8.4 安装包。

标签: sql postgresql cursor plpgsql


【解决方案1】:

看起来您的 PostgreSQL 安装不完整或已损坏。在较旧的 PostgreSQL 安装程序中,plpgsql 是可选的。所以,请检查您的安装。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 2021-06-21
    相关资源
    最近更新 更多