У меня есть процедура, которая генерирует контрольную сумму и добавляет ее к переданной ей строке. Я заметил, что RAISE_NOTICE работает больше, чем оператор обновления. Есть идеи, почему это так?
CREATE OR REPLACE PROCEDURE public.validatefarmerid() LANGUAGE 'plpgsql'
AS $BODY$
DECLARE
final_id CHAR VARYING;
Vid_generated CHAR VARYING;
Sno BigInt;
T BIGINT=1000001;
PK_Code int;
checksum_char char(1);
DECLARE
C1 CURSOR
FOR SELECT SrNo,id_generated FROM GeneratedFarmerID WHERE FarmerID IS NULL and
COALESCE(AssignedToState,0)=0;
BEGIN
WHILE T<5000000 LOOP
INSERT INTO GeneratedFarmerID(ID_GENERATED) VALUES(CEILING(random()*100000000000));
T:=T+1;
END LOOP;
FOR C2 IN C1 LOOP
Sno:=c2.SRno;
Vid_generated:=CAST(c2.id_generated AS VARCHAR);
PK_Code=SP_Varoff(CAST(Vid_generated AS BIGINT));
checksum_char:=cast(PK_Code as char(1)); --checksum using verhoeff algorithm.
final_id:=CAST(Vid_generated AS VARCHAR)||checksum_char;
update GeneratedFarmerID set farmerid=final_id where Srno=Sno;
RAISE NOTICE 'Final ID:%',final_id;
END LOOP;
END;
$BODY$;