我正在尝试在查询中使用WITH子句但继续收到消息
ORA-00942:表或视图不存在
我试图在这里创建一个简单的查询:
使用
测试AS
(
来自客户的SELECT COUNT(Customer_ID)
)
SELECT * FROM test;
但即使这样做也不行,它只是给出了信息:
SELECT * FROM test; 2 3 4 5 6 SQL>
SELECT * FROM测试
* 第1行的错误:
ORA-00942:表或视图不存在
我之前从未使用过WITH子句,这里有什么简单的东西吗? 我使用的是Oracle数据库10g企业版10.2.0.1.0版 - Prod 任何建议将不胜感激。感谢。
答案 0 :(得分:5)
我相信你的脚本在WITH子句和SELECT:
之间有一个空行SQL> WITH
2 test AS
3 (
4 SELECT COUNT(Customer_ID) FROM Customer
5 )
6
SQL> select * from test;
select * from test
*
ERROR at line 1:
ORA-00942: table or view does not exist
这与您报告的错误报告为“第1行”和SQL“select * from test”的事实一致,此时此SQL应位于“第6行”。
答案 1 :(得分:2)
您的示例有效 - 只是尝试过它(SQL * Plus日志如下):
SQL> create table customer
2 (customer_id number);
Table created.
SQL> with
2 test as
3 (select count(customer_id)
4 from customer
5 )
6 select * from test;
COUNT(CUSTOMER_ID)
------------------
0
您确定您拥有customer表的权限,还是不需要为它设置架构限定符(如果它位于不同的架构中)?
答案 2 :(得分:0)
看看这个example
修改
一个非常基本的样本:
create table emp (emp_id number, dept_id number);
insert into emp values (1,20);
insert into emp values (2,20);
insert into emp values (3,20);
insert into emp values (4,30);
with
emp_counter as (select count(distinct emp_id) from emp),
dept_counter as (select count(distinct dept_id) from emp)
select * from emp_counter, dept_counter;
COUNT(DISTINCTEMP_ID) COUNT(DISTINCTDEPT_ID)
--------------------- ----------------------
4 2
答案 3 :(得分:0)
您获得的错误意味着您的当前架构中不存在视图表,并且您的架构没有可见的同义词。例如,如果我以greg身份登录,并且表在bob中,那么我应该将该表引用为bob.test。
SELECT * FROM bob.test
对于WITH语法,我不熟悉,但其他答案也很好。
答案 4 :(得分:0)
您是否尝试添加到脚本的顶部
SET SQLBLANKLINES ON;