我需要从我们的 oracle 数据库中检索相当多的数据,为此我需要运行 20 多个查询。有没有办法在同一个连接上一次运行多个查询?
我尝试使用 / 来分隔查询,但这只是打开了多个选项卡,查询仍然按顺序运行,尽管我不必一一启动它们。
我需要从我们的 oracle 数据库中检索相当多的数据,为此我需要运行 20 多个查询。有没有办法在同一个连接上一次运行多个查询?
我尝试使用 / 来分隔查询,但这只是打开了多个选项卡,查询仍然按顺序运行,尽管我不必一一启动它们。
按ctrl++将打开一个新的非共享工作表,shift该N工作表可以并行运行查询。在这种情况下,您必须在每个选项卡中粘贴一个查询并手动运行它们,但是在仅测试几个查询时它很方便。
在 SqlDeveloper 首选项Tools > Preferences > Database > Worksheet
中:选中New Worksheet to use unshared connction
. 这将允许您在每个选项卡中同时执行多个查询。也请看截图。
不,每个查询都需要一个单独的会话。
@Tony 是正确的,每个查询必须在它自己的会话中运行才能并行运行。你用的是什么工具?在 PL/SQL Developer 中,我可以打开一个数据库连接,然后在该连接中打开多个会话并“并行”运行多个查询——我必须手动执行每个查询,但如果它们都需要很长时间,也许那会为您提供所需的东西,或者在您使用的任何工具中提供类似的东西。
假设您喜欢危险地生活,您可以使用编译指示 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;
因此,最简单的解决方案是使用 Oracle 软件的其余部分附带的 SQL Plus。这是一个笨重的工具,但可以满足我的需要,同时我可以自由地将 SQL Developer 用于其他查询。