Saya sedang menulis skrip untuk mengisi beberapa tabel dengan data untuk pengujian.
Saya ingin menulis sesuatu seperti yang berikut ini tetapi saya tidak tahu bagaimana melakukannya (saya 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);
Saya tahu saya bisa mengatur ulang kueri dan menggunakan sequence.currval
referensi, tapi saya lebih suka agar id disimpan dalam variabel bernama benar.
Mungkin saya harus membungkus skrip dalam DECLARE ... BEGIN ... END;
tapi saya berharap ada cara yang lebih ringkas untuk melakukannya.
Tambahan 27 Mei 2011 15:31
Tampaknya dalam hal apa pun saya harus mendeklarasikan variabel dalam sebuah DECLARE
blok. Jadi saya coba
DECLARE
USER_ID NUMBER(10,0) := 1;
BEGIN
insert into TEST_USER
values (user_id, 'andrew', sysdate);
END;
tapi saya mendapatkan kesalahan berikut
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
Itu menunjuk ke deklarasi variabel.
Saya menggunakan java untuk memuat skrip dari file dan menjalankannya menggunakan driver Oracle JDBC (ojdbc14-10.2.0.4.0.jar) pada server Oracle 11g.
Tabel dengan TEST_USER telah dibuat
create table TEST_USERS (
id number(10, 0) not null,
name varchar2(100),
date_ins date default sysdate,
primary key (id)
);
sumber
Saya pikir Anda benar-benar dapat pergi tanpa variabel tambahan dengan menggunakan
currval
:sumber