仅执行最后一个插入语句

时间:2013-03-28 01:16:14

标签: sql oracle

我对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);
/

我试过没有/也。但它给了我同样的错误。我哪里错了?你能建议一个好的教程/网站,我可以从中学到这些吗?

非常感谢!

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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));

然后插入就行了。

插入后的/字符将导致每个插入执行两次。要么用分号或用/来终止它们,而不是用两者分隔。