2013-03-28 114 views
1

我對SQL相當陌生,我試圖在表格中插入一堆INSERT語句。 我正在使用SQL Developer和Oracle 11g。只有最後一條插入語句被執行

我的表:

CREATE OR REPLACE TYPE friendlist AS VARRAY(20) OF VARCHAR2(50); 
/

create or replace type table fbuser(fbid varchar(10) not null enable,firstname varchar(30),lastname varchar(30),dob 
date,birthcity varchar(30),birthstate varchar(25),friends friendlist,primary key(fbid)); 
/

我的插入語句:

insert into fbuser values('f1','abhinav','cheatham',to_date('01-jul-1969','dd-mon-yyyy'),'lake city','fl',friendlist('f2','f7','f9')); 
/

insert into fbuser values('f2','abhishek','deponto',to_date('05-feb-1984','dd-mon-yyyy'),'adak','ak',friendlist('f1','f6','f9','f16','f18')); 
/

insert into fbuser values('f3','aldrich','chapel',to_date('27-may-1988','dd-mon-yyyy'),'vernon hills','il',null); 
/

我試過不/過。但它給了我同樣的錯誤。我哪裏錯了?你能建議一個很好的教程/網站,我可以從中瞭解到這一點嗎?

非常感謝!

+0

你會得到哪個錯誤? – Sebas 2013-03-28 01:25:20

+0

我沒有得到任何錯誤,但只有我的最後一個插入語句得到執行。當我從fbuser中選擇*時,我只從最後一個插入標記獲取數據。 – 2013-03-28 01:26:58

+0

你承諾了嗎? – Sebas 2013-03-28 01:27:21

回答

2

您可以使用下面的語法插入多行:

INSERT ALL 
    INTO mytable (column1, column2, column3) VALUES ('val1.1', 'val1.2', 'val1.3') 
    INTO mytable (column1, column2, column3) VALUES ('val2.1', 'val2.2', 'val2.3') 
    INTO mytable (column1, column2, column3) VALUES ('val3.1', 'val3.2', 'val3.3') 
SELECT NULL FROM DUAL; 
+0

但爲什麼我的代碼不工作?只是好奇。 – 2013-03-28 01:22:34

0

我不知道你如何能夠成功地執行該CREATE TABLE語句 - 這不是我的系統(11gR2的)上有效的語法。我對此有更好的運氣:

create table fbuser(fbid varchar2(10) not null enable 
    , firstname varchar2(30), lastname varchar2(30), dob date 
    , birthcity varchar2(30), birthstate varchar2(25)  
    , friends friendlist, primary key (fbid)); 

然後插入按照他們應該去。

插入後面的/字符將導致每個插入執行兩次。要麼用分號或用/來終止它們,但不能同時用兩個來終止它們。

+0

謝謝!但是,如何將varchar更改爲varchar2來解決問題。你是否暗示在11gR2中不支持varchar2?我會嘗試/提示。 – 2013-03-28 02:56:11

+0

@PRamesh,在發佈代碼的情況下,很難弄清楚爲什麼會發生問題。由於'CREATE ... fbuser ...'既不創建類型也不創建表。 – 2013-03-28 03:38:00

+0

並且'varchar2'被用來代替'varchar',因爲甲骨文一直說他們保留改變'varchar'的行爲的權利,以使它符合ANSI的要求。 (他們一直在說,**年**)所以每個人都使用'varchar2',以便應用程序仍然可以工作。* varchar'的行爲發生變化時引用*。 * end airquote * – 2013-03-28 03:40:48