暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 在SQLPLUS中使用分解子查询

askTom 2018-07-06
247

问题描述

我有一个调用SQLPlus执行Oracle查询的Perl脚本。SQL使用 “与” 子句创建多个命名查询,目的是稍后在查询中重用它们。SQL的一般结构如下:

SPOOL FileA.txt
WITH EVENT_TYPE_1 AS
  (SELECT * FROM TBL1)
,EVENT_TYPE_2 AS
  (SELECT * FROM TBL2)
,EVENT_TYPE_3 AS
  (SELECT * FROM TBL3)

SELECT * FROM EVENT_TYPE_1
UNION
SELECT * FROM EVENT_TYPE_2
UNION
SELECT * FROM EVENT_TYPE_2
SPOOL OFF

SPOOL FileB.txt
SELECT * FROM EVENT_TYPE_2
SPOOL OFF
EXIT
复制


当它试图假脱机到 “FileB.txt” 时,它会抛出一个Oracle错误,指出 “ORA-00942: 表或视图不存在”。如果我使用一个实际表从我们的数据库到假脱机到FileB.txt它的工作原理。您能告诉我为什么在完成第一个假脱机操作后,Oracle无法识别任何名为where子句的查询吗?

专家解答

这是一个真正的硬回报,即 “从EVENT_TYPE_1中选择 *” 之前的空白链接吗?

如果是这样,则需要将其删除-空白行显示 “返回新SQL的命令提示符”

例如

SQL> with xxx as (select * from dual )
  2
SQL> select * from xxx;
select * from xxx
              *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> with xxx as ( select * from dual )
  2  select * from xxx;

D
-
X

1 row selected.
复制


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论