Postgresql Rcord变量未赋值

Postgresql Rcord变量未赋值,postgresql,Postgresql,嗨 当我运行下面的函数时,错误如下 错误:尚未分配记录“v_preorderec” 甚至我初始化了v_preorderec:=null 请帮帮我 CREATE OR REPLACE FUNCTION order_f1(p_order_num text) RETURNS void LANGUAGE plpgsql AS $function$ DECLARE c_order CURSOR FOR SELECT od.itemno, it.item_cost,

当我运行下面的函数时,错误如下

错误:尚未分配记录“v_preorderec”

甚至我初始化了v_preorderec:=null

请帮帮我

CREATE OR REPLACE FUNCTION order_f1(p_order_num text)
 RETURNS void
 LANGUAGE plpgsql
AS $function$
DECLARE
c_order CURSOR FOR
  SELECT od.itemno,
         it.item_cost,
         it.item_code
         FROM orderdtls od
LEFT OUTER JOIN itemdtls it ON (od.itemno = it.itemno)
WHERE od.order_num = p_order_num 
      v_orderrec                 RECORD;
      v_preorderrec             RECORD;
BEGIN
    v_preorderrec:=null;
    open c_order;
      loop
        fetch c_order
          into v_orderrec;

        IF NOT FOUND THEN EXIT; END IF;
         if coalesce(v_preorderrec.itemno::text, '') = '' or
           v_preorderrec.itemno !=
           v_orderrec.itemno then

          perform modorder(v_orderrec.itemno);

        end if;
        v_preorderrec := v_orderrec;
      end loop;
      close c_order;
END;
$function$
;

提前感谢。

当第一次进入循环时,
v_preorderec
从未被分配。您只在循环结束时执行此操作。所以你不能真正使用这个记录变量的任何字段。顺便说一句:你不需要循环或PL/pgSQL。你能帮我处理这个问题吗。最初,我想给v_preorderec记录的字段分配空值。一旦分配了此记录v_orderrec,则我只想将值分配给此记录v_preorderrec。游标声明后缺少分号。我错漏了它。但还是同样的错误。你能帮我一下吗?当循环第一次进入时,
v_preorderec
从未被分配过。您只在循环结束时执行此操作。所以你不能真正使用这个记录变量的任何字段。顺便说一句:你不需要循环或PL/pgSQL。你能帮我处理这个问题吗。最初,我想给v_preorderec记录的字段分配空值。一旦分配了此记录v_orderrec,则我只想将值分配给此记录v_preorderrec。游标声明后缺少分号。我错漏了它。但还是同样的错误。你能帮帮我吗。