标签: ora-00904

Hibernate本机SQL错误

我正在尝试使用hibernate 3.3.2.GA执行sql本机查询.

我有以下查询.

session.createSQLQuery("SELECT {dept1.*}, {dept2.*} FROM Dept d1, Dept d2 WHERE d1.deptId = d2.deptId").
   addEntity("dept1",com.test.pojo.Dept.class).
   addEntity("dept2",com.test.pojo.Dept.class).
   list();
Run Code Online (Sandbox Code Playgroud)

Dept类的映射文件是

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.test.pojo.Dept">
  <id column="deptId" name="deptId" type="long">
   <generator class="native"/>
  </id>
  <version name="version" access="field" column="version"></version>
  <property  name="deptName" type="string" column="deptName"/>

  <set name="emps" cascade="all" inverse="true">
     <key column="deptId"></key>
     <one-to-many class="com.test.pojo.Emp"/>
  </set>
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

但为什么我得到以下错误?它将我的查询转换为

SELECT dept1.**deptId as deptId1_0_,**dept1.**version as version__0,**dept1.**deptName as deptName1_0 _,**dept2.**deptId as deptId1_1 _,**dept2.**version as version1_1 _,**dept2.**deptName as deptName1_1_**FROM Dept d1,Dept d2 WHERE …

oracle hibernate ora-00904

5
推荐指数
1
解决办法
2万
查看次数

plsql oracle检查约束错误

我得到这个错误:ORA-00904:"M":无效的标识符 - >如果我把('M','F')//单引号我收到此错误消息:PLS-00103:遇到符号"M"期待以下之一:*&= - +; </> at in是mod的余数不是rem返回返回<>或!=或〜=> = <= <>和/或喜欢LIKE2_ LIKE4_ LIKEC_之间使用|| multiset批量成员SUBMULTISET_ - >如果我删除约束,表将正常创建

这是我的代码

EXECUTE IMMEDIATE 'CREATE TABLE dependents
    ( Id    NUMBER(6)
    , FirstName     VARCHAR2(20)
    , LastName      VARCHAR2(25)
     CONSTRAINT     dep_last_name_nn  NOT NULL
    , Birthdate Date
    , Relation VARCHAR2(20)
    , Gender char(1) 
    , RelativeId Number(6) 
    , CONSTRAINT pk_dependent primary key (Id) 
    , CONSTRAINT ck_gender CHECK(Gender in("F","M")) 


    )';         
Run Code Online (Sandbox Code Playgroud)

oracle plsql check-constraints ora-00904

5
推荐指数
2
解决办法
2537
查看次数

Oracle SQL - 帮助在Select语句中使用Case

CREATE TABLE student_totalexp2 nologging compress AS
SELECT /*+parallel(a,4)*/ DISTINCT a.member_sk, 
       CASE 
         WHEN b.end_date IS NULL THEN 
           SYSDATE - MIN(TO_DATE(b.start_date,'yyyymm'))
         ELSE 
           (MAX(TO_DATE(b.end_date,'yyyymm')) - MIN(TO_DATE(b.start_date,'yyyymm')))  
       END as days_experience
  FROM student_schools a 
  JOIN rdorwart.position_rd b ON a.member_sk = b.member_sk 
 WHERE days_experience < 730 
 GROUP BY a.member_sk;

SELECT COUNT(*) 
  FROM student_experience; 
Run Code Online (Sandbox Code Playgroud)

知道为什么我一直收到这个错误:错误报告:

SQL错误:ORA-00904:"DAYS_EXPERIENCE":无效标识符00904. 00000 - "%s:无效标识符"*原因:
*操作:

sql oracle ora-00904

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

列别名引用

这个查询将数字分成数千,数百,五十等等受尊重的地方.问题是我无法通过其别名来引用该列.在Oracle中,我收到此错误:

ora-00904:"twos":标识符无效

但代码在MS Access中运行良好

查询:

SELECT 
    BT, 
    CNO, 
    AMT,  
    TRUNC(AMT/1000) AS THS, 
    TRUNC((AMT-(THS*1000))/500) AS FIVHUN, 
    TRUNC((AMT-((THS*1000)+(FIVHUN*500)))/100) AS HUND, 
    TRUNC((AMT-(((THS*1000)+(FIVHUN*500))+(HUND*100)))/50) AS FIF, 
    TRUNC((AMT-(((THS*1000)+(FIVHUN*500))+(HUND*100)+(FIF*50)))/20) AS TWENTY, 
    TRUNC((AMT-(((THS*1000)+(FIVHUN*500))+(HUND*100)+(FIF*50)+(TWENTY*20)))/10) AS TENS, 
    TRUNC((AMT-(((THS*1000)+(FIVHUN*500))+(HUND*100)+(FIF*50)+(TWENTY*20)+(TENS*10)))/5) AS FIVES, 
    TRUNC((AMT-(((THS*1000)+(FIVHUN*500))+(HUND*100)+(FIF*50)+(TWENTY*20)+(TENS*10)+(FIVES*5)))/2) AS TWOS, 
    TRUNC((AMT-(((THS*1000)+(FIVHUN*500))+(HUND*100)+(FIF*50)+(TWENTY*20)+(TENS*10)+(FIVES*5)+(TWOS*2)))/1) AS ONES 
FROM 
    EMPLOYER;
Run Code Online (Sandbox Code Playgroud)

sql oracle ora-00904

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

如何在Where子句中使用Alias?

我有这个程序:

 PROCEDURE P_LOAD_EXPIRED_ACCOUNT
  (
  pDayDiff IN NUMBER,
  ExpiredCur OUT MEGAGREEN_CUR
  )
  IS
  BEGIN
  OPEN ExpiredCur FOR
  SELECT 
  ACCOUNT_NAME, SERVICE_TYPE, 
      CASE 
      WHEN SERVICE_TYPE = 1 THEN ADD_MONTHS(ACTIVATED_DATE,3)
      WHEN SERVICE_TYPE = 2 THEN ADD_MONTHS(ACTIVATED_DATE,6)
      WHEN SERVICE_TYPE = 3 THEN ADD_MONTHS(ACTIVATED_DATE,12)        
       END 
       AS EXPIRED_DATE
  FROM SUBSCRIBERS
  WHERE (EXPIRED_DATE - CURRENT_DATE) < pDayDiff;
  END;
Run Code Online (Sandbox Code Playgroud)

但SQL Developer会生成此错误:

错误(20,10):PL/SQL:ORA-00904:"EXPIRED_DATE":标识符无效

我相信PLSQL允许我在Where子句中使用Alias,但有什么我忘了吗?

提前致谢.

sql oracle plsql stored-procedures ora-00904

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

Oracle向所有员工显示其部门的工资高于平均水平

我正在撰写查询,以查找收入高于其部门内平均工资的员工.我需要显示该部门的员工ID,工资,部门ID和平均工资.

我有一个几乎可以工作的查询,但它一直给我"ORA-00904:"AVG_SAL":无效的标识符"错误.我这样做是否正确 为什么我收到这个无效的标识符错误?

SELECT employee_id, salary, department_id,
  (SELECT ROUND(AVG(salary),2)
  FROM employees e_inner
  WHERE e_inner.department_id = e.department_id) AS avg_sal
FROM employees e
WHERE salary > avg_sal
ORDER BY avg_sal DESC
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql ora-00904

3
推荐指数
1
解决办法
4万
查看次数

基本的Oracle问题

我是oracle的新手.当我使用以下方法创建存储过程时:

CREATE OR REPLACE PROCEDURE PROCEDURE1 
AS
BEGIN

  SELECT FIRSTNAME,
         LASTNAME
    INTO FirstName,LastName
    FROM EMPLOYEE;

END PROCEDURE1;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

PL/SQL语句忽略标识符必须声明FIRSTNAME ORA-00904标识符无效

sql oracle plsql stored-procedures ora-00904

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

ORA-00904 ::无效的标识符

我试图在Oracle中创建一个表并获取错误: ORA-00904: : invalid identifier

这是我的命令.我真的看不出任何问题.请帮我识别错误.谢谢.

CREATE TABLE Sale (
CustomerId INT NOT NULL ,
BarCode INT NOT NULL ,
SalesId INT NOT NULL ,
Date DATE NULL ,
CheckOut TINYINT(1) NULL ,
PRIMARY KEY (CustomerId, BarCode, SalesId) ,
CONSTRAINT fk_Customer_has_Product_Customer
FOREIGN KEY (CustomerId )
REFERENCES Customer (CustomerId )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_Customer_has_Product_Product1
FOREIGN KEY (BarCode )
REFERENCES Product (BarCode )
ON DELETE NO ACTION
ON UPDATE NO ACTION);
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle10g ora-00904

3
推荐指数
2
解决办法
1万
查看次数

在 Oracle 中执行存储过程

我有一个存储过程,在 Toad for Oracle 上我正在使用

SELECT FROM PKGName.ProcedureName(1,'10/10/2010','10/23/2010',7,7) 
  FROM DUAL
Run Code Online (Sandbox Code Playgroud)

我在这个过程中也有 3 个输出参数,我得到了一个

ORA-00904: PKGName.ProcedureName : 无效标识符

是否也必须在过程调用中提及输出参数?如果是,我该如何使用它?

sql oracle ora-00904

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

Oracle新手错误:ORA-00904使用“case when”时标识符无效

我在查询中遇到错误。此查询正常并返回数据(选择和行数用于分页):

select *
from (select a.*, rownum rnum
from (select id_edition, id_document, name, extension, creation_date, url, 
(select inscription_date from edition_student_d0 where id_edition = 12345 and id_third =     12345) inscription_date
from upd_edition_doc_d0
where id_edition = 1071591
order by creation_date desc) a
where rownum <= 10 )
where rnum >= 1
Run Code Online (Sandbox Code Playgroud)

现在我尝试包含“case when”并仅在某些情况下获取 url,因此我进行了这些修改,包括 case 块:

select *
from (select a.*, rownum rnum
from (select id_edition, id_document, name, extension, creation_date, 
(select inscription_date from edition_student_d0 where id_edition = 12345 and id_third = 12345) …
Run Code Online (Sandbox Code Playgroud)

oracle identifier case-when ora-00904

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