Oracle 11g 多表插入语句

Oracle 11g Insert Statement into Multiple Tables

我目前在尝试同时执行多个语句时遇到问题。我在尝试 运行 以下 INSERT 语句时不断收到此错误:

INSERT INTO report_header ( report_number, company_id, user_id, entry_date) VALUES ( 6797, 15967, 84, TRUNC(SYSDATE));
INSERT INTO report_detail (part_id, condition_id, uom_id, dvc_id, cqh_id, alt_part_id, entry_date, qty_quoted, qty_req, unit_cost, unit_price, customer_price, route_code) VALUES ((SELECT part_id from parts where pn = '2366'),15,1,3,(select max(report_id) from report_header), (SELECT part_id from parts where pn = '2366'),'11-JUN-2015',1,1,0,1895,1895,'O');
SELECT * from Dual;  

因此,当我拆分命令并 运行 它们一个一个地 运行 时,它们 运行 没问题,但在同一条语句中,我得到 'command not properly ended' 错误。我一直在尝试所有不同的线程,这是我能得到的结果。任何帮助表示赞赏。

提前谢谢大家。

sstan 指出的是您在每个语句末尾缺少分号。

尝试:

INSERT INTO report_header ( report_number, company_id, user_id, entry_date) VALUES ( 6797, 15967, 84, TRUNC(SYSDATE));
INSERT INTO report_detail (part_id, condition_id, uom_id, dvc_id, cqh_id, alt_part_id, entry_date, qty_quoted, qty_req, unit_cost, unit_price, customer_price, route_code) VALUES ((SELECT part_id from parts where pn = '2366'),15,1,3,(select max(report_id) from report_header), (SELECT part_id from parts where pn = '2366'),'11-JUN-2015',1,1,0,1895,1895,'O');
SELECT * from Dual;

注意“;”分隔每个单独的语句。

根据您的评论,我仍然不清楚您使用什么工具将报表提交到数据库。

很可能您的查询工具一次只能处理一条语句。

即使您像以前那样将 3 个语句批量处理,它们仍然是 3 个不同的语句,也许该工具无法处理。

一种可用于将其变成单个语句的技术是将 SQL 作为单个匿名 PL/SQL 块的一部分提交。不确定您的工具是否支持该功能。但如果是这样,你可以试试这个(我从对偶部分省略了 select,因为我不知道它的意义是什么):

begin
    INSERT INTO report_header ( report_number, company_id, user_id, entry_date) VALUES ( 6797, 15967, 84, TRUNC(SYSDATE));
    INSERT INTO report_detail (part_id, condition_id, uom_id, dvc_id, cqh_id, alt_part_id, entry_date, qty_quoted, qty_req, unit_cost, unit_price, customer_price, route_code) VALUES ((SELECT part_id from parts where pn = '2366'),15,1,3,(select max(report_id) from report_header), (SELECT part_id from parts where pn = '2366'),'11-JUN-2015',1,1,0,1895,1895,'O');
end;

关键是像上面那样使用 beginend; 关键字。希望它对你有用。