本人存储过程小白,初次接触,写了个简短的存储过程,发现执行的时候报错,大神们帮忙看下,到底是哪里出问题了。
create or replace PROCEDURE XX_P_ORL_ATT20_UPDATE(OR_GID IN VARCHAR2)
AS
  CURSOR ORL_GID_CUR
  IS
    SELECT ORL.ORDER_RELEASE_LINE_GID
    FROM ORDER_RELEASE_LINE ORL
    WHERE ORL.ORDER_RELEASE_GID=OR_GID
  ORL_GID_ROW ORL_GID_CUR%ROWTYPE;
BEGIN
  FOR ORL_GID_ROW IN ORL_GID_CUR
  LOOP
    UPDATE ORDER_RELEASE_LINE ORL
    SET ORL.ATTRIBUTE20=
      (SELECT XORLE.EXTEND_TEXT1
      FROM XX_ORDER_RELEASE_LINE_EXTEND XORLE
      WHERE XORLE.ORDER_RELEASE_LINE_GID=ORL_GID_ROW.ORDER_RELEASE_LINE_GID
      )
    WHERE ORL.ORDER_RELEASE_LINE_GID=ORL_GID_ROW.ORDER_RELEASE_LINE_GID
  END LOOP;
  COMMIT;
END;

解决方案 »

  1.   

    --   ORL_GID_ROW ORL_GID_CUR%ROWTYPE; 这行不要。
    BEGIN
      FOR ORL_GID_ROW IN ORL_GID_CUR   -- 这里直接使用就可以了,不用定义
      

  2.   

    创建同义词
    create 
    --or replace 
    synonym 同义词名
      for 表名;注意:表名 你对应的用户是那个,注意你的由查询对应这个表的权限
      举例创建用户user_a下的表 tab  同义词  syn_tab  create or replace 
    synonym syn_tab  for  user_a.tab