我正在尝试使用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 …
我得到这个错误: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) 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:无效标识符"*原因:
*操作:
这个查询将数字分成数千,数百,五十等等受尊重的地方.问题是我无法通过其别名来引用该列.在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) 我有这个程序:
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,但有什么我忘了吗?
提前致谢.
我正在撰写查询,以查找收入高于其部门内平均工资的员工.我需要显示该部门的员工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) 我是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标识符无效
我试图在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) 我有一个存储过程,在 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 : 无效标识符
是否也必须在过程调用中提及输出参数?如果是,我该如何使用它?
我在查询中遇到错误。此查询正常并返回数据(选择和行数用于分页):
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)