我需要从我们的oracle DB中检索相当多的数据,为此我需要运行20多个查询。有没有办法在同一个连接上一次运行多个查询?
我尝试使用/来分隔查询,但这只是打开多个标签,查询仍按顺序运行,但我不必一个一个地启动它们。
答案 0 :(得分:43)
按 ctrl + shift + N 将打开一个可以并行运行查询的新的非共享工作表。在这种情况下,您必须在每个选项卡中粘贴查询并手动运行它们,但在测试一些查询时它很方便。
答案 1 :(得分:4)
在SqlDeveloper偏好设置中:Tools > Preferences > Database > Worksheet
检查New Worksheet to use unshared connction
的选项。这将允许您同时执行多个查询,每个查询都在每个选项卡中。另见screenshot。
答案 2 :(得分:1)
不,每个查询都需要一个单独的会话。
答案 3 :(得分:0)
@Tony是正确的,每个查询必须在它自己的会话中运行才能并行运行。你用的是什么工具?在PL / SQL Developer中,我可以打开一个数据库连接,然后在该连接中打开多个会话并以“并行”方式运行多个查询 - 我必须手动执行每个查询,但是如果它们每个都需要很长时间,那么也许会在你正在使用的任何工具中得到你需要的东西,或类似的东西。
答案 4 :(得分:0)
假设您喜欢危险地生活,您可以使用编译指示AUTONOMOUS_TRANSACTION从一个脚本运行多个“线程”。例如:
DECLARE
PROCEDURE foo(i IN PLS_INTEGER) AS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO qux
SELECT * FROM bar
WHERE baz = i;
COMMIT;
EXCEPTION WHEN OTHERS THEN ROLLBACK;
END;
BEGIN
foo(1);
foo(2);
foo(3);
END;
答案 5 :(得分:-1)
因此,最简单的解决方案是使用其他Oracle软件附带的SQL Plus。这是一个笨重的工具,但我做了我需要的工作,而我可以自由地使用SQL Developer进行其他查询。