출처] http://blog.naver.com/royalwang?Redirect=Log&logNo=100148098982
CREATE OR REPLACE PROCEDURE SEQUENCE_RESET(S_NAME IN VARCHAR2)
AS S_VALUE INTEGER;
BEGIN
execute immediate 'alter sequence ' || S_NAME || ' minvalue 0';
execute immediate 'select ' || S_NAME || '.nextval from dual' into S_VALUE ;
execute immediate 'alter sequence ' || S_NAME || 'increment by -'|| S_VALUE ;
execute immediate 'select ' || S_NAME || '.nextval from dual' into S_VALUE ;
execute immediate 'alter sequence ' || S_NAME || 'increment by 1';
END;
PL/SQL에서 Sequence를 생성하고 삭제하려고 했더니
DCL자체가 안 먹히는 듯.
그래서 위 게시물의 방법을 이용하여 실제로 프로젝트에 적용시켜 보기로 했다.
SEQUENCE_RESET 프로시져를 생성하여 패키지에서 호출해 쓰려고 하였으나, 알지 못하는 이유로 실패..
아래처럼 프로시져 내용을 통째로 옮겨넣고 진행하였다.
미리 seq_bgtmap 라는 시퀀스를 생성한 후에,
아래처럼 해보자.
Procedure sp_Copy_Bgtdtl(
p_bgt_yy in varchar2,
p_inp_emp in varchar2,
CurQue_mB646 in out Que_mB646Cursor) IS
temp_seq integer;
Begin
execute immediate 'alter sequence seq_bgtmap minvalue 0';
execute immediate 'select seq_bgtmap.nextval from dual' into temp_seq;
execute immediate 'alter sequence seq_bgtmap increment by -'||temp_seq;
execute immediate 'select seq_bgtmap.nextval from dual' into temp_seq;
execute immediate 'alter sequence seq_bgtmap increment by 1';
insert into bgtmap(bgt_yy , map_id , prgm_id , bugt_cd ,
.
.
.
.
결과는 굿.
'DB > Oracle 일반' 카테고리의 다른 글
[ERWIN] Unique Naming 메세지 뜨는 이유 (2) | 2012.10.24 |
---|---|
dbms_obfuscation_toolkit / 오라클 암호화.복호화 (0) | 2012.07.19 |
ORA-06553: PLS-307: too many declarations of 'DESENCRYPT' match this call (0) | 2012.07.19 |
DBMS_CRYPTO 권한 부여방법 (0) | 2012.04.16 |
Oracle] 치환변수 해제 (&var) (0) | 2012.03.30 |