为什么 Oracle SQLPlus 运行 不会多条语句?它在第一个分号处停止
Why won't Oracle SQLPlus run multiple statements? It's stopping at the first semicolon
我正在尝试将一些数据插入数据库。看这里:
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('102', 'TAMI', 'DAWSON', '2632 TAKLI CIRCLE', 'FREDERICTON', 'NB', 'E4C 1X2', 11);
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('103', 'CURT', 'KNIGHT', '4025 CORNELL COURT', 'HALIFAX', 'NS', 'E2T 1T2', 6);
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('104', 'JAMAL', 'MELENDEZ', '788 EAST 145TH AVENUE', 'MONCTON', 'NB', 'E4C 1U2', 0);
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('105', 'IVA', 'MCCLAIN', '6045 MUSKET BALL CIRCLE', 'SUMMIT', 'NB', 'E4T 1J2', 15);
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('106', 'MIRANDA', 'PARKS', '4469 MAXWELL PLACE', 'GERMANTOWN', 'NB', 'E2H 1S2', 0);
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('107', 'ROSARIO', 'ELLIOTT', '7578 DANNER AVENUE', 'TRACEY', 'NB', 'E4C 1G2', 5);
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('108', 'MATTIE', 'GUY', '4390 EVERGREEN STREET', 'LILY', 'NS', 'E2K 1F2', 0);
我的脚本文件夹中有这个。我用 "Get myScript.sql" 将它加载到缓冲区,然后 运行 它,我得到这个错误:
values ('102', 'TAMI', 'DAWSON', '2632 TAKLI CIRCLE', 'FREDERICTON', 'NB', 'E4C 1X2', 11);
*
ERROR at line 2:
ORA-00911: invalid character
好像是指分号是无效字符。如果我 运行 一次一个陈述,即:
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('102', 'TAMI', 'DAWSON', '2632 TAKLI CIRCLE', 'FREDERICTON', 'NB', 'E4C 1X2', 11);
然后进入下一个,每一个都完美无缺。我只是不能 运行 一下子把它们都弄完。 运行 它们同时在别人的机器上运行良好。据我所知,SQLPlus 出于某种原因总是试图将它作为一个语句来执行,因此当它在中途遇到分号时会出现错误。有谁知道如何更改它以使其正常工作?
SQL*Plus中的分号表示"I've finished typing"。去掉分号并在语句行之间放置一个 / 来执行缓冲区中的内容。
insert blah
/
insert blah
/
我错了。 SQLPlus 不会直接在缓冲区中获取多个语句。你可以一次性copy/paste它们,它会一条一条执行,或者你可以运行脚本文件@myFile.sql,但是你不能加载多个语句并执行它们直接在缓冲区中:即
get myFile.sql
/
我不确定你用 I load it into the buffer with "Get myScript.sql", then run it
是什么意思,或者你为什么要在 SQLPlus 中将某些东西加载到缓冲区中,但是我 运行 脚本一直有很多插入语句而没有任何问题。
看来您已经有了一个脚本文件,所以只需在您的 SQLPlus 中调用它即可 shell:
@Get myScript.sql
不需要缓冲区。
我正在尝试将一些数据插入数据库。看这里:
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('102', 'TAMI', 'DAWSON', '2632 TAKLI CIRCLE', 'FREDERICTON', 'NB', 'E4C 1X2', 11);
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('103', 'CURT', 'KNIGHT', '4025 CORNELL COURT', 'HALIFAX', 'NS', 'E2T 1T2', 6);
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('104', 'JAMAL', 'MELENDEZ', '788 EAST 145TH AVENUE', 'MONCTON', 'NB', 'E4C 1U2', 0);
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('105', 'IVA', 'MCCLAIN', '6045 MUSKET BALL CIRCLE', 'SUMMIT', 'NB', 'E4T 1J2', 15);
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('106', 'MIRANDA', 'PARKS', '4469 MAXWELL PLACE', 'GERMANTOWN', 'NB', 'E2H 1S2', 0);
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('107', 'ROSARIO', 'ELLIOTT', '7578 DANNER AVENUE', 'TRACEY', 'NB', 'E4C 1G2', 5);
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('108', 'MATTIE', 'GUY', '4390 EVERGREEN STREET', 'LILY', 'NS', 'E2K 1F2', 0);
我的脚本文件夹中有这个。我用 "Get myScript.sql" 将它加载到缓冲区,然后 运行 它,我得到这个错误:
values ('102', 'TAMI', 'DAWSON', '2632 TAKLI CIRCLE', 'FREDERICTON', 'NB', 'E4C 1X2', 11);
*
ERROR at line 2:
ORA-00911: invalid character
好像是指分号是无效字符。如果我 运行 一次一个陈述,即:
insert into membership(mem_num, fname, lname, street, city, prov, postal, balance)
values ('102', 'TAMI', 'DAWSON', '2632 TAKLI CIRCLE', 'FREDERICTON', 'NB', 'E4C 1X2', 11);
然后进入下一个,每一个都完美无缺。我只是不能 运行 一下子把它们都弄完。 运行 它们同时在别人的机器上运行良好。据我所知,SQLPlus 出于某种原因总是试图将它作为一个语句来执行,因此当它在中途遇到分号时会出现错误。有谁知道如何更改它以使其正常工作?
SQL*Plus中的分号表示"I've finished typing"。去掉分号并在语句行之间放置一个 / 来执行缓冲区中的内容。
insert blah
/
insert blah
/
我错了。 SQLPlus 不会直接在缓冲区中获取多个语句。你可以一次性copy/paste它们,它会一条一条执行,或者你可以运行脚本文件@myFile.sql,但是你不能加载多个语句并执行它们直接在缓冲区中:即
get myFile.sql
/
我不确定你用 I load it into the buffer with "Get myScript.sql", then run it
是什么意思,或者你为什么要在 SQLPlus 中将某些东西加载到缓冲区中,但是我 运行 脚本一直有很多插入语句而没有任何问题。
看来您已经有了一个脚本文件,所以只需在您的 SQLPlus 中调用它即可 shell:
@Get myScript.sql
不需要缓冲区。