我试图通过SQL Developer v3.0.04将多行插入到SQL,Oracle表中
数据库是由Uni设置的,所以我不知道它是什么版本.
在线查看之后,我提出了下面的代码,但它不会插入任何数据.我用一行测试了插件,这没问题.我错过了什么?
Insert all
Into Patient Values
('101', '1 house', Null, 'Kingston', 'Surrey', 'KT1 1XX', '10/jan/1980', 'm', 01452987456)
Into Patient Values
('102', '2 egg rd', 'vail', 'guildford', 'Surrey', 'GU1 1LL', '05/dec/1985', 'm', 01452987456)
Into Patient Values
('103', '6 station rd', Null, 'guildford', 'Surrey', 'GU1 2XX', '15/may/1990', 'f', 01452987456)
Select * from Patient;
Run Code Online (Sandbox Code Playgroud)
INSERT ALL有两种不同的用途.一种是将所选列的不同子集插入表中.另一种是根据某些标准将行指向不同的行.在这两种情况下,数据都来自SELECT子句而不是来自VALUES. 请参阅文档中的示例.
通常,您只需INSERT在单个PL/SQL块中编写多个语句.就像是
begin
Insert Into Patient Values
('101', '1 house', Null, 'Kingston', 'Surrey', 'KT1 1XX', '10/jan/1980', 'm', 01452987456);
Insert Into Patient Values
('102', '2 egg rd', 'vail', 'guildford', 'Surrey', 'GU1 1LL', '05/dec/1985', 'm', 01452987456);
Insert Into Patient Values
('103', '6 station rd', Null, 'guildford', 'Surrey', 'GU1 2XX', '15/may/1990', 'f', 01452987456);
end;
/
Run Code Online (Sandbox Code Playgroud)
如果你真的想在单个SQL语句中执行此操作,则可以执行此操作,INSERT ... SELECT但这通常比使用三个单独的语句更复杂.
insert into patient
select *
from (select '101' id, '1 house' addr, null col1, 'Kingston' city, ...
from dual
union all
select '102', '2 egg rd', 'vail', 'guildford', 'Surrey', 'GU1 1LL', '05/dec/1985', 'm', 01452987456
from dual
union all
select '103', '6 station rd', Null, 'guildford', 'Surrey', 'GU1 2XX', '15/may/1990', 'f', 01452987456
from dual)
Run Code Online (Sandbox Code Playgroud)
我还提醒您使用正确的数据类型并在INSERT语句中指定列名.我猜,例如,Patient表的第一列是某种PatientID被定义为a的NUMBER.如果是这样,你真的想插入一个数字而不是一个字符串.类似地,具有诸如'15/may/1990'之类的值的第七列可能DATE在表中被定义为a .如果是这样,您INSERT应该通过使用特定格式掩码DATE显式调用TO_DATE或使用ANSI日期格式插入非字符串,即date '1980-01-10'.如果您希望最后一列保留前导0,则需要确保将数据库中的列定义为a VARCHAR2并插入字符串而不是数字.
| 归档时间: |
|
| 查看次数: |
1735 次 |
| 最近记录: |