테스트 할 데이터로 일부 테이블을 채우는 스크립트를 작성 중입니다.
다음과 같은 것을 작성하고 싶지만 어떻게 해야할지 모르겠습니다 (Oracle 11g입니다)
SET ENABLED_USER_ID = SEQ.NEXTVAL; // PSEUDOCODE
SET DISABLED_USER_ID = SEQ.NEXTVAL; // PSEUDOCODE
INSERT INTO USERS
(ID, USR_NAME)
VALUES (:ENABLED_USER_ID, 'ANDREW');
INSERT INTO CAR
(CAR_ID, CAR_NAME, USR_ID)
VALUES (CARSEQ.NEXTVAL, 'FORD', :ENABLED_USER_ID);
INSERT INTO USERS
(ID, USR_NAME)
VALUES (:DISABLED_USER_ID, 'ANDREW');
INSERT INTO CAR
(CAR_ID, CAR_NAME, USR_ID)
VALUES (CARSEQ.NEXTVAL, 'FORD', :DISABLED_USER_ID);
쿼리를 재정렬하고 sequence.currval
참조를 사용할 수 있다는 것을 알고 있지만 ID를 올바르게 명명 된 변수에 저장하는 것이 좋습니다.
어쩌면 스크립트를 감싸 DECLARE ... BEGIN ... END;
야하지만 더 간결한 방법이 있기를 바랍니다.
추가 2011 년 5 월 27 일 15:31
어떤 경우에도 변수를 DECLARE
블록 으로 선언해야합니다 . 그래서 나는 노력하고있다.
DECLARE
USER_ID NUMBER(10,0) := 1;
BEGIN
insert into TEST_USER
values (user_id, 'andrew', sysdate);
END;
하지만 다음과 같은 오류가 발생합니다
Caused by: java.sql.SQLException: ORA-06550: **line 2, column 27:** PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: * & = - + ; < / > at in is mod remainder not rem <an exponent (**)> <> or != or ~= >= <= <> and or like like2 like4 likec between || multiset member submultiset
변수 선언을 가리 킵니다.
java를 사용하여 파일에서 스크립트를로드하고 Oracle 11g 서버에서 Oracle JDBC 드라이버 (ojdbc14-10.2.0.4.0.jar)를 사용하여 스크립트를 실행하고 있습니다.
TEST_USER 테이블이 생성되었습니다
create table TEST_USERS (
id number(10, 0) not null,
name varchar2(100),
date_ins date default sysdate,
primary key (id)
);