글을 등록할 때 보통 글번호값을 시쿼스로 잡아주는데, 이 시퀀스값을 담아두었다가 같은 프로시저내에서 다음
쿼리문으로 넘겨줄수있는 방법이 없을까요?
WHERE절에 서브쿼리
SELECT board_seq.currval
FROM TBL_BOARD 를 해줘도 안되고,
또 프로시저에 임시변수
tempbbsno := board_seq.nextval; 을 해주고 이 변수값을 인설트문에 넣어줄려고해도 안되네요.
인설트문에서 사용한 시퀀스값을 같은 프로시저안에서 다음 쿼리문에 사용할 수 있는 방법을 알려주세요!!
============================================================================================
CREATE OR REPLACE PROCEDURE createboard(I_subjects IN VARCHAR2
,I_title IN VARCHAR2
,I_content IN VARCHAR2
,I_writer IN VARCHAR2)
IS
fastcall tbl_board.FASTCALL_B%TYPE;
BEGIN
INSERT INTO tbl_board(BBSNO, SUBJECTS, TITLE, CONTENT, WRITER, GID, PID)
VALUES(board_seq.nextval, I_subjects, I_title, I_content, I_writer, board_seq.currval, 0);
SELECT FASTCALL_B
INTO fastcall
FROM TBL_BOARD
WHERE BBSNO =이 부분에 현재 시퀀스값이 들어가야함;
UPDATE TBL_BOARD
SET FASTCALL_B = NVL(fastcall_b, fastcall)
WHERE BBSNO =이 부분에 현재 시퀀스값이 들어가야함;
END;
============================================================================================
CREATE OR REPLACE PROCEDURE createboard(I_subjects IN VARCHAR2 ,I_title IN VARCHAR2 ,I_content IN VARCHAR2 ,I_writer IN VARCHAR2) IS fastcall tbl_board.FASTCALL_B%TYPE; v_currseq number; BEGIN INSERT INTO tbl_board(BBSNO, SUBJECTS, TITLE, CONTENT, WRITER, GID, PID) VALUES(board_seq.nextval, I_subjects, I_title, I_content, I_writer, board_seq.currval, 0); SELECT board_seq.currval INTO v_currseq FROM DUAL; SELECT FASTCALL_B INTO fastcall FROM TBL_BOARD WHERE BBSNO = v_currseq; UPDATE TBL_BOARD SET FASTCALL_B = NVL(fastcall_b, fastcall) WHERE BBSNO = v_currseq; END;
board_seq.currval
INTO
v_currseq
FROM
DUAL;
프로그램상에 위 코드넣으면 않될껍니다.
v_currseq := board_seq.currval;
로 대체... 하면 됩니다.