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;错误提示为:黄色的列在此处不允许,希望大家帮帮忙,谢谢了
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;错误提示为:黄色的列在此处不允许,希望大家帮帮忙,谢谢了
但变量前面怎么没有定义?
V_BFD_SQR, V_BFD_BZ
--如果是从外表里面获取的,那么你应该将其传进过程来啊
......
V_BFD_BZ varchar2(20);--一定要与来源表里面的字段数据类型相同
begin
--给V_BFD_BZ赋值
select col into V_BFD_BZ
from table_name--这里是你的来源表
where --这里是检索条件
--下面才可以使用V_BFD_BZ变量,因为它有值
end;
......