ฉันกำลังเขียนสคริปต์เพื่อเติมตารางด้วยข้อมูลสำหรับการทดสอบ
ฉันต้องการเขียนสิ่งต่อไปนี้ แต่ฉันไม่รู้วิธีการ (ฉัน 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;
แต่ฉันหวังว่าจะมีวิธีรัดกุมกว่าในการทำ
นอกจากนี้ 27 พฤษภาคม 2554 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 JDBC (ojdbc14-10.2.0.4.0.jar) บนเซิร์ฟเวอร์ Oracle 11g
สร้าง TEST_USER ตารางแล้ว
create table TEST_USERS (
id number(10, 0) not null,
name varchar2(100),
date_ins date default sysdate,
primary key (id)
);