标签: ora-00904

oracle 10g sql带子句编译错误

编译错误说"mm"和"cc"是无效的标识符!

with m as (
  select instructor, 
         count(*) as c 
    from class 
group by instructor),
     mm as ( 
  select max(m.c) as cc 
    from m)
select m.instructor 
  from m 
 where m.c = mm.cc;
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle10g ora-00904

1
推荐指数
1
解决办法
1255
查看次数

优化SQL语句以使用查询但需要以某种方式引用子查询之外的列

在Oracle查询中是否有任何方法可以在其外部的子查询中引用列,或者即使通过不同的方式实现该效果?到目前为止,我在网上看到的所有东西都没有帮助.

例如(这是我想要的事情):

SELECT a.product_code, b.received, b.issued
FROM productinfo a,
 (SELECT SUM(qty_received) AS received, SUM(qty_issued) AS issued
  FROM productdetail b WHERE b.product_code = a.product_code AND active = 1);
Run Code Online (Sandbox Code Playgroud)

我已经尝试了大量不同的变体/组合当我得到像ORA-00904这样的错误:与WHERE子句关系有关的无效标识符.

目前,如果我作为单独的查询运行,例如:

SELECT product_code FROM productinfo;
Run Code Online (Sandbox Code Playgroud)

然后为每个记录:

SELECT SUM(qty_received) AS received, SUM(qty_issued) AS issued FROM productdetail
WHERE product_code = '(specified)' AND active = 1;
Run Code Online (Sandbox Code Playgroud)

这可能需要半个多小时来运行8000个记录,这只是简单的愚蠢.

用完头发,任何帮助赞赏!! 谢谢.

sql oracle subquery query-optimization ora-00904

1
推荐指数
1
解决办法
358
查看次数

pl/sql - to_date不使用execute immediate参数

我想能够像这样执行我的下面的过程:

exec procname('29-JAN-2011');
Run Code Online (Sandbox Code Playgroud)

proc代码是:

PROCEDURE procname(pardate VARCHAR2) IS

  vardate DATE := to_date(pardate, 'DD-MON-YYYY');
  SQLS VARCHAR2(4000);

BEGIN    

  SQLS := 'SELECT cola, colb
             FROM tablea 
            WHERE TRUNC(coldate) = TRUNC(TO_DATE('''||pardate||''',''DD/MON/YYYY''))';

  EXECUTE IMMEDIATE SQLS;

END;
Run Code Online (Sandbox Code Playgroud)

它不断抛出错误:

ORA-00904:"JAN":标识符无效.

它编译,但它在我运行此命令时抛出错误:

EXEC procname('29-JAN-2011');
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql dynamic-sql ora-00904

1
推荐指数
1
解决办法
8951
查看次数

rownum上的SQL查询

SELECT instmax
FROM
  (SELECT instmax ,rownum r
  FROM
    ( SELECT instmax FROM pswlinstmax ORDER BY instmax DESC NULLS LAST
    )
  WHERE r = 2
  );
Run Code Online (Sandbox Code Playgroud)

执行后它给出了这个错误:

ORA-00904: "R": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error at Line: 39 Column: 8
Run Code Online (Sandbox Code Playgroud)

为什么它会给出这个错误?

sql oracle ora-00904 rownum

0
推荐指数
1
解决办法
3778
查看次数

我为什么得到:[Oracle] [ODBC] [Ora] ORA-00904:标识符无效

当我清楚地识别出变量时,Oracle一直给我一个无效的标识符错误.

  //get parameters from the request
   String custID=request.getParameter("cust_ID");
   String saleID=request.getParameter("sale_ID");
   String firstName=request.getParameter("first_Name");
   String mInitial=request.getParameter("mI");
   String lastName=request.getParameter("last_Name");
   String streetName=request.getParameter("street");
   String city=request.getParameter("city");
   String state=request.getParameter("state");
   String zipCode=request.getParameter("zip_Code");
   String DOB2=request.getParameter("DOB");
   String agentID=request.getParameter("agent_ID");
   String homePhone=request.getParameter("home_Phone");
   String cellPhone=request.getParameter("cell_Phone");
   String profession=request.getParameter("profession");
   String employer=request.getParameter("employer");
   String referrer=request.getParameter("referrer");


  query =
    "UPDATE customer"
    + " SET customer.cust_ID=custID, customer.sale_ID=saleID, customer.first_Name=firstName, customer.mI=mInitial, customer.last_Name=lastName, customer.street_Name=streetName, customer.city=city, customer.state=state, customer.zip_Code=zipCode,customer. DOB=DOB2, customer.agent_ID=agentID, customer.home_Phone=homePhone, customer.cell_Phone=cellPhone, customer.profession=profession, customer.employer=employer, customer.referrer=referrer"
    + " WHERE customer.cust_ID=custID " ;

  preparedStatement = conn.prepareStatement(query);


  preparedStatement.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

SQL TABLE

        CREATE TABLE customer
          (cust_ID      NUMBER          NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

java sql oracle jdbc ora-00904

0
推荐指数
2
解决办法
4748
查看次数

Oracle MERGE引发ORA-00904错误

我正在使用merge命令将不存在的记录插入表中.当我使用简单的插入命令时,它工作正常.如果我使用合并系统总是警告ORA-00904:"T"."GROUP_COMPANY_ID"无效的标识符.一旦我将ON条件更改为(1 = 1)以强制为true,则merge命令正常工作.

原始合并声明出错了什么?我非常确定该表是在没有双引号的情况下创建的,所以这里没有案例问题.

create table test
(
  create_date      DATE not null,
  group_company_id CHAR(16) not null
)

-- This is okay
INSERT INTO test (create_date, group_company_id) VALUES (TO_DATE('20100531', 'YYYYMMDD'), 'abc');

-- This one will raise ORA-00904 error
MERGE INTO test T
USING (SELECT 'abc' AS group_company_id FROM DUAL) C
   ON (T.group_company_id = C.group_company_id)
-- ON (1 = 1)
WHEN NOT MATCHED THEN
     INSERT (create_date, group_company_id)
     VALUES (TO_DATE('20100531', 'YYYYMMDD'), 'abc')
WHEN MATCHED THEN
     UPDATE SET group_company_id = 'abc';
Run Code Online (Sandbox Code Playgroud)

oracle merge ora-00904

0
推荐指数
1
解决办法
3279
查看次数

ORA-00904: "Good Resort": 无效标识符

我创建了以下选择查询来显示基于 if then else 使用的数据 CASE-WHEN-THEN

select id,name,
    case
     when rating between 4.0 and 5 then "very good"
     when rating between 3.0 and 3.5 the "good"
    else "Good Resort"
    end as comment
from resort
order by id;
Run Code Online (Sandbox Code Playgroud)

执行时它给出了这个

错误

ORA-00904 : "Good Resort": 无效标识符

sql oracle case ora-00904

0
推荐指数
1
解决办法
64
查看次数

为什么我在执行这个SQL时会得到无效的标识符?

为什么我在执行这个SQL时会得到无效的标识符?我完全难过了.这个简单的代码可能有什么问题.我得到的错误是

ORA-00904 ::无效的标识符

CREATE TABLE themepark
(
apples NUMBER(10) PRIMARY KEY,
bananas VARCHAR2(20), NOT NULL,
cherries VARCHAR2(10), NOT NULL,
eggs VARCHAR2(10) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

我正在使用Oracle DB来使用SQL Fiddle.

另一方面,下面的代码可行.

CREATE TABLE ticket
(
red1 VARCHAR2(15) PRIMARY KEY,
orange NUMBER(10) NOT NULL,
yellow NUMBER(4,2) NOT NULL,
green VARCHAR2(2) NOT NULL,
blue VARCHAR2(15) NOT NULL
); 
Run Code Online (Sandbox Code Playgroud)

什么使得第一个代码(不起作用),与第二个代码有什么不同呢?

oracle ora-00904

-1
推荐指数
1
解决办法
262
查看次数