我有一个存储过程,在其中将三个变量声明为记录,并在稍后对其进行初始化,如下所示:
CREATE OR REPLACE FUNCTION calculateUnitPrice()
RETURNS VOID AS
$$
DECLARE
amenities RECORD;
paramValues RECORD;
logsumAccessebility RECORD;
propertyType integer;
unitPrice float;
freehold integer;
tazId bigint;
unit RECORD;
BEGIN
FOR unit IN (SELECT * from main2012.fm_unit_res)
LOOP
amenities := getAmenitiesById(unit.sla_address_id);
tazId := toBigint(amenities.taz_id);
logsumAccessebility := getLogsumByTazId(tazId);
propertyType := getPropertyTypeFromUnitType(unit.unit_type);
paramValues := getParamValuesByPropertyType(propertyType);
freehold := 0;
unitPrice := paramValues.intercept + (paramValues.floor_area * ln(unit.floor_area)) + (paramValues.freehold * freehold) + (paramValues.logsum_accessebility * logsumAccessebility.accessibility);
UPDATE main2012.fm_unit_res SET rent = unitPrice WHERE fm_unit_id = unit.fm_unit_id;
END LOOP;
RETURN;
END;
$$ LANGUAGE plpgsql;
但是,当我运行该函数时,出现如下错误:
ERROR: record "paramvalues" is not assigned yet
SQL state: 55000
Detail: The tuple structure of a not-yet-assigned record is indeterminate.
Context: PL/pgSQL function calculateunitprice() line 20 at assignment
请给我你的想法。我在这里做任何错误的事情(语法)还是在存储过程中可以初始化的记录数有限制?
通过添加调试输出
raise info '%',getPropertyTypeFromUnitType(unit.unit_type); raise info '%',getPropertyTypeFromUnitType(unit.unit_type);
在宣布之前 paramValues
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句