存储过程中循环语句中列不可用怎么解决?

需求原因,在写一个存储过程,用于用户点击按钮的时候更新数据。因为存储过程中使用了循环语句,结果在变异的时候,提示

  • 错误(35,24): PL/SQL: ORA-00984: 列在此处不允许

请有经验的大神帮忙看看,下面附上源码:

create or replace procedure PRC_MES_TECHSTAN_Refresh.zip

 create or replace procedure        PRC_MES_TECHSTAN_Refresh(    pi_factory   in varchar2, --10000    pi_company   in varchar2, --1000    p_user       in varchar2, --用户       p_chktype    in varchar2, --审核\驳回标识    o_result     out number, --成功标识0成功,1不成功    o_msg        out varchar2 --返回提示信息)is/*    存储过程名: PRC_MES_TECHSTAN_Refresh   用于MES系统更新工艺信息清单列表,将原来没有的工艺编号插入到工艺表*   传入参数格式:*           无,在界面配置里面设置*   传出参数格式:*           无,在界面配置里面设置*   #2023-06-30 新增*/    p_TECH_NO       Varchar2(200);    p_CZ_DATE       date;    p_CZ_USER       varchar2(50);    p_MODIFY_DATE   date;begin    if p_chktype = '更新工艺型号清单' Then        Begin            for p_row in (                select distinct ITEM_MODEL                from mes_items a where substr(a.item_no,1,2) IN ('02','03')                and a.ITEM_MODEL not in (select s.tech_no  from mes_techstan s)                ) LOOP            INSERT INTO mes_techstan                (TECH_NO, CZ_DATE, cz_user)  --表结构中的主键字段已经用 sys_guid() 默认,所以不需要单独插入            VALUES                (c_row.ITEM_MODEL, sysdate, p_user);            END LOOP;        exception            when others then            rollback;            o_result := 2;            o_msg    := '错误!' || sqlerrm ;            return;        end;                COMMIT;                o_result := 0;        o_msg    := p_chktype || '成功!';        end if;    end;

SQL yydcwl 发布于 2023-6-30 17:12 (编辑于 2023-6-30 17:14)
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
取消
  • 1关注人数
  • 208浏览人数
  • 最后回答于:2023-6-30 17:14
    请选择关闭问题的原因
    确定 取消
    返回顶部