임뫜
988
2019-04-19 16:23:05
1
365

오라클 프로시저 오류예여...



CREATE OR REPLACE PROCEDURE PRO_UNIQUECODE 
(
  p_tablename IN NVARCHAR2(50),
  cur OUT SYS_REFCURSOR	
  --년도4자리 + 일련번호 6자리
)
AS

 v_uniqueno		NUMBER(8);
 v_UniqueYear	nvarchar2(4);
 v_uniquecode   nvarchar2(10);
 
BEGIN
v_UniqueYear  := substr(to_char(SYSDATE,112), 1,4); --년도 4자리 

begin tran

 v_recordcount NUMBER(10);
 
if exists(select * from UNIQUECODE ( thenXLOCK end if;) where TABLENAME=p_tablename and UNIQUEYEAR=v_UniqueYear)
	v_recordcount:=1;
else
	v_recordcount:=0;


IF v_recordcount = 0  
	THEN
		v_uniqueno := 1;
		INSERT INTO UNIQUECODE (TABLENAME, UNIQUEYEAR,UNIQUECODE)
		VALUES  (p_tablename,v_UniqueYear, v_uniqueno );

ELSE
		SELECT UNIQUECODE + 1 INTO v_uniqueno
		FROM UNIQUECODE WITH; (XLOCK)
		where TABLENAME=p_tablename and UNIQUEYEAR=v_UniqueYear;

		UPDATE UNIQUECODE
		SET  UNIQUECODE = v_uniqueno
		where TABLENAME=p_tablename and UNIQUEYEAR=v_UniqueYear;
END IF;

commit tran;
open cur for select v_UniqueYear + substr('000000' + CONVERT(NVARCHAR, greatest(-length('000000' + CONVERT(NVARCHAR),-v_uniqueno)),6) from dual;
END;


목적은 일련번호 10자리 생성이구요. 오라클db 11g xe 버전입니다.

이걸 저장하려하면

오류를 배출합니다....... 


도움부탁드릴게요..


0
  • 답변 1

  • chriss
    99
    2019-04-19 17:01:03

    오라클 하나도 모르는데 34번째 줄에 with; 하고 뒤에 where절이 올수 있나요..?

  • 로그인을 하시면 답변 을 등록할 수 있습니다.