您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Oracle的过程中重用选择查询

在Oracle的过程中重用选择查询

您可以使用sql表对象存储选择结果并重新使用它。这将消耗更多的内存,并且只有在第一个SELECT花费大量时间时才可能有效。

CREATE TYPE tab_number IS TABLE OF NUMBER;
/

您可以将其与BULK COLLECT INTO子句一起使用:

DECLARE
   ids tab_number;
BEGIN
   SELECT id BULK COLLECT INTO ids FROM table_with_ids;
   SELECT * /*into ??*/ 
     FROM table1 
    WHERE id IN (SELECT column_value FROM TABLE(ids));
   SELECT * /*into ??*/ 
     FROM table2
    WHERE id IN (SELECT column_value FROM TABLE(ids));
END;

在版本9i中,在需要使用CAST查询表之前,请执行以下操作:

SELECT * 
  FROM table2 
 WHERE id IN (SELECT column_value FROM CAST (TABLE(ids) AS tab_number));

或者,您可以使用GLOBAL TEMPORARY TABLE来存储中间结果集。

Oracle 2022/1/1 18:36:07 有502人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶