CREATE OR REPLACE PROCEDURE JLQJ_BFD_BFSC_SP(P_JLQJ_BMS IN CLOB,
                                             P_BGD_LX   IN NUMBER,
                                             
                                             P_USER_ID  IN NUMBER) IS  V_JLQJ_BMS VARCHAR2(5000);
  V_BFD_BH   VARCHAR2(200);  TYPE V_CURSOR IS REF CURSOR;  V_RS_JLQJ    V_CURSOR;
  V_RS_JLQJ_RT JLQJ_JLQJ_TB%ROWTYPE;BEGIN
  SAVEPOINT V_SP_00000;  V_JLQJ_BMS := TO_CHAR(P_JLQJ_BMS);  SELECT TO_CHAR(MAX(TO_NUMBER(SUBSTR(BFD_BH, 4))))
    INTO V_BFD_BH
    FROM JLQJ_BFD_TB
   WHERE BFD_BH LIKE 'BGD' || TO_CHAR(SYSDATE, 'YYYYMMDD') || '___';  IF V_BFD_BH IS NULL THEN
    V_BFD_BH := 'BGD' || TO_CHAR(SYSDATE, 'YYYYMMDD') || '001';
  ELSE
    V_BFD_BH := 'BGD' || TO_CHAR(TO_NUMBER(V_BFD_BH) + 1, 'FM00000000000');
  END IF;  OPEN V_RS_JLQJ FOR 'SELECT *
                        FROM JLQJ_JLQJ_TB
                       WHERE 1 = 1
                         AND JLQJ_BM IN (' || V_JLQJ_BMS || ')';
  LOOP
    FETCH V_RS_JLQJ
      INTO V_RS_JLQJ_RT;
    EXIT WHEN V_RS_JLQJ%NOTFOUND;    INSERT INTO JLQJ_BFD_TB
      (BFD_ID,
       BFD_BH,
       BFD_XTZ,
       JLQJ_BM,
       ORG_ID,
       JLQJ_MC,
       JLQJ_CNBH,
       JLQJ_GLTZ,
       JLJQ_JDRQ,
       JLQJ_JDZSH,
       JLQJ_SL,
       JLQJ_ABCJ,
       JLQJ_CCBH,
       JLQJ_SQLY,
       BFD_SQR,
       BFD_BZ,
       BFD_STATE)
    VALUES
      (SEQJLQJ_BFD.NEXTVAL,
       V_BFD_BH,
       V_BFD_XTZ,
       V_RS_JLQJ_RT.JLQJ_BM,
       V_RS_JLQJ_RT.ORG_ID,
       V_RS_JLQJ_RT.JLQJ_MC,
       V_RS_JLQJ_RT.JLQJ_CNBH,
       V_RS_JLQJ_RT.JLQJ_GLTZ,
       V_RS_JLQJ_RT.JLQJ_JDRQ,
       V_RS_JLQJ_RT.JLQJ_JDZSH,
       V_RS_JLQJ_RT.JLQJ_SL,
       V_RS_JLQJ_RT.JLQJ_ABCJ,
       V_RS_JLQJ_RT.JLQJ_CCBH,
       V_RS_JLQJ_RT.JLQJ_SQLY,
       V_BFD_SQR,
       V_BFD_BZ,
       0);
  END LOOP;
  CLOSE V_RS_JLQJ;  COMMIT;EXCEPTION
  WHEN OTHERS THEN
    ROLLBACK TO SAVEPOINT V_SP_00000;
    RAISE_APPLICATION_ERROR(-20001,
                            'STS_ERROR: JLQJ_BFD_BFSC_SP ERROR HAPENED' ||
                            SQLERRM);
END JLQJ_BFD_BFSC_SP;错误提示为:黄色的列在此处不允许,希望大家帮帮忙,谢谢了

解决方案 »

  1.   

    V_BFD_BZ这个值从何而来,你定义的,还是从其他表里面查询到的?
      

  2.   

    从上下文来看,这两个值是变量。
    但变量前面怎么没有定义?
    V_BFD_SQR, V_BFD_BZ
      

  3.   

    刚接触oracle,语句还不是很明白,谢谢指点
      

  4.   


    --如果是从外表里面获取的,那么你应该将其传进过程来啊
    ......
         V_BFD_BZ varchar2(20);--一定要与来源表里面的字段数据类型相同
    begin
         --给V_BFD_BZ赋值
         select col into V_BFD_BZ
         from table_name--这里是你的来源表
         where --这里是检索条件
         
         --下面才可以使用V_BFD_BZ变量,因为它有值
    end;
    ......