मैं परीक्षण के लिए डेटा के साथ कुछ तालिकाओं को आबाद करने के लिए एक स्क्रिप्ट लिख रहा हूं।
मैं निम्नलिखित जैसा कुछ लिखना चाहूंगा लेकिन मुझे नहीं पता कि यह कैसे करना है (मैं 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
संदर्भ का उपयोग कर सकता हूं , लेकिन मैं आईडी को उचित रूप से नामित चर में सहेजना पसंद करूंगा।
हो सकता है कि मुझे सिर्फ स्क्रिप्ट को लपेटना चाहिए, DECLARE ... BEGIN ... END;
लेकिन मुझे उम्मीद है कि इसे करने के लिए अधिक संक्षिप्त तरीका है।
जोड़ 27 मई 2011 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
यह चर घोषणा की ओर इशारा करता है।
मैं एक फ़ाइल से स्क्रिप्ट को लोड करने के लिए जावा का उपयोग कर रहा हूं और ओरेकल 11 जी सर्वर पर ओरेकल जेडडीबीसी ड्राइवर (ओजडबक 14-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)
);