SQL Fiddle - ORACLE 11G 和存储过程
SQL Fiddle - ORACLE 11G and Stored procedure
我想再问一个问题,结果又出来了一个;)
例如,我想使用 SQL Fiddle,但是创建 table 和生成随机数据的过程对我来说不起作用...
为什么这个例子不起作用(构建模式不起作用)?
http://sqlfiddle.com/#!4/6915f/2
create table tab (
id_tab integer not null,
val1 integer,
val2 integer,
val3 integer,
val4 integer,
val5 integer,
val6 integer,
val7 integer,
val8 integer,
val9 integer,
CONSTRAINT tab_pk PRIMARY KEY (id_tab)
);
create index val1_index on tab (val1);
create index val2_index on tab (val2);
create index val3_index on tab (val3);
create index val4_index on tab (val4);
create index val5_index on tab (val5);
create index val6_index on tab (val6);
create index val7_index on tab (val7);
create index val8_index on tab (val8);
create index val9_index on tab (val9);
create procedure test1 as
begin
for x in 1..1000
loop
insert into tab(id_tab, val1, val2, val3, val4, val5, val6, val7, val8, val9)
values ((select nvl(max(id_tab), 0) + 1 from tab),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9));
end loop;
end;
结果:
ORA-00900: invalid SQL statement
程序必须以斜杠结束;所以你需要添加它,并将 build-schema 命令分隔符从默认的 ;
更改为 /
- 然后将代码中的所有其他分隔符从分号更改为斜杠:
create table tab (
id_tab integer not null,
val1 integer,
val2 integer,
val3 integer,
val4 integer,
val5 integer,
val6 integer,
val7 integer,
val8 integer,
val9 integer,
CONSTRAINT tab_pk PRIMARY KEY (id_tab)
)
/
create index val1_index on tab (val1)
/
create index val2_index on tab (val2)
/
create index val3_index on tab (val3)
/
create index val4_index on tab (val4)
/
create index val5_index on tab (val5)
/
create index val6_index on tab (val6)
/
create index val7_index on tab (val7)
/
create index val8_index on tab (val8)
/
create index val9_index on tab (val9)
/
create procedure test1 as
begin
for x in 1..1000
loop
insert into tab(id_tab, val1, val2, val3, val4, val5, val6, val7, val8, val9)
values ((select nvl(max(id_tab), 0) + 1 from tab),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9));
end loop;
end;
/
由于您需要一个匿名块来调用该过程,因此您也需要在另一部分中执行相同的操作 - 包括更改默认分隔符:
begin
test1;
end;
/
select * from tab
/
我想再问一个问题,结果又出来了一个;)
例如,我想使用 SQL Fiddle,但是创建 table 和生成随机数据的过程对我来说不起作用...
为什么这个例子不起作用(构建模式不起作用)?
http://sqlfiddle.com/#!4/6915f/2
create table tab (
id_tab integer not null,
val1 integer,
val2 integer,
val3 integer,
val4 integer,
val5 integer,
val6 integer,
val7 integer,
val8 integer,
val9 integer,
CONSTRAINT tab_pk PRIMARY KEY (id_tab)
);
create index val1_index on tab (val1);
create index val2_index on tab (val2);
create index val3_index on tab (val3);
create index val4_index on tab (val4);
create index val5_index on tab (val5);
create index val6_index on tab (val6);
create index val7_index on tab (val7);
create index val8_index on tab (val8);
create index val9_index on tab (val9);
create procedure test1 as
begin
for x in 1..1000
loop
insert into tab(id_tab, val1, val2, val3, val4, val5, val6, val7, val8, val9)
values ((select nvl(max(id_tab), 0) + 1 from tab),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9));
end loop;
end;
结果:
ORA-00900: invalid SQL statement
程序必须以斜杠结束;所以你需要添加它,并将 build-schema 命令分隔符从默认的 ;
更改为 /
- 然后将代码中的所有其他分隔符从分号更改为斜杠:
create table tab (
id_tab integer not null,
val1 integer,
val2 integer,
val3 integer,
val4 integer,
val5 integer,
val6 integer,
val7 integer,
val8 integer,
val9 integer,
CONSTRAINT tab_pk PRIMARY KEY (id_tab)
)
/
create index val1_index on tab (val1)
/
create index val2_index on tab (val2)
/
create index val3_index on tab (val3)
/
create index val4_index on tab (val4)
/
create index val5_index on tab (val5)
/
create index val6_index on tab (val6)
/
create index val7_index on tab (val7)
/
create index val8_index on tab (val8)
/
create index val9_index on tab (val9)
/
create procedure test1 as
begin
for x in 1..1000
loop
insert into tab(id_tab, val1, val2, val3, val4, val5, val6, val7, val8, val9)
values ((select nvl(max(id_tab), 0) + 1 from tab),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9),
dbms_random.value(1,9));
end loop;
end;
/
由于您需要一个匿名块来调用该过程,因此您也需要在另一部分中执行相同的操作 - 包括更改默认分隔符:
begin
test1;
end;
/
select * from tab
/