Oracle 11g将语句插入多个表

时间:2015-06-16 01:19:03

标签: sql oracle oracle11g triggers sql-insert

我目前在尝试同时执行多个语句时遇到问题。尝试运行以下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;  

因此,当我拆分命令并逐个运行它们运行正常但在同一语句中我得到'命令未正确结束'错误。我一直在尝试所有各种线程,这是我能得到的关闭。任何帮助表示赞赏。

先谢谢大家。

2 个答案:

答案 0 :(得分:1)

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

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

即使您按照自己的方式批量处理3个语句,这些仍然是3个不同的语句,也许该工具无法处理。

可用于将其转换为单个语句的技术是将SQL作为单个匿名PL / SQL块的一部分提交。不确定您的工具是否支持该功能。但是如果确实如此,你可以试试这个(我从选择中删除了双重部分,因为我不知道它的重点是什么):

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;关键字。希望它对你有用。

答案 1 :(得分:0)

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;

注意“;”划定每个单独的陈述。