标签: ora-00904

我可以在Oracle中拥有可延迟的唯一功能索引吗?

我想在Oracle 10g中创建一个可延迟的唯一功能索引.

我知道如何创建一个独特的功能索引:

create unique index LIST_ITEM_ENTRY_NO_UNIQ
on LIST_ITEM (case status when 'cancel' then null else LIST_KEY end,
              case status when 'cancel' then null else ENTRY_NO end);
Run Code Online (Sandbox Code Playgroud)

我知道如何创建一个可延迟的唯一索引:

alter table LIST_ITEM add constraint LIST_ITEM_ENTRY_NO_UNIQ
unique (LIST_KEY,ENTRY_NO) deferrable initially deferred;
Run Code Online (Sandbox Code Playgroud)

知道这两件事,我试过这个:

alter table LIST_ITEM add constraint LIST_ITEM_ENTRY_NO_UNIQ
unique (case STATUS when 'cancel' then null else LIST_KEY end,
        case STATUS when 'cancel' then null else ENTRY_NO end)
deferrable initially deferred;
Run Code Online (Sandbox Code Playgroud)

但是我收到"ORA-00904:无效标识符"错误.要么我的语法错误,要么Oracle不支持可延迟的功能索引?有人可以给我一个解决方案或一个明确的答案吗?

oracle indexing unique ora-00904

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

将Oracle数据库从9.2.0.7升级到9.2.0.8

我们计划从Oracle 9.2.0.7升级到9.2.0.8.建议升级的主要原因是解决与异常"以错误终止:ORA-00904:"T2"."SYS_DS_ALIAS_4":无效标识符"的问题,当我们尝试执行DBMS_STATS.GATHER_SCHEMA_STATS时.

我们担心提议的升级可能会对我们的Java应用程序产生负面影响,或者在最坏的情况下可能甚至不支持我们的Java应用程序.

我们可以采取哪些可能的方法或策略来确保从Oracle 9.2.0.7升级到9.2.0.8不会对我们的Java应用程序产生负面影响,或者不会导致我们的Java应用程序无法正常运行.基本上我们只想确认我们的应用程序仍然支持Oracle 9.2.0.8.

谢谢.

oracle oracle9i ora-00904

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

关于oracle 11g问题的索引

我有桌子(MEN),有900,000条记录.

在这张表中我有字段IPTdate.

当我运行查询时:

select * from MEN where IP = '1.1.1.1' and Tdate = TO_DATE('07/04/2010', 'DD/MM/YYYY')
Run Code Online (Sandbox Code Playgroud)

我得到结果需要很长时间.

我尝试制作这样的索引:

create index
    my_in
on
   MEN (IP,Tdate );
Run Code Online (Sandbox Code Playgroud)

但如何运行查询以获得快速结果?

我试试这个:

select My_in from MEN where IP = '1.1.1.1' and Tdate = TO_DATE('07/04/2010', 'DD/MM/YYYY')
Run Code Online (Sandbox Code Playgroud)

并得到错误: ORA-00904

sql oracle oracle11g ora-00904

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

Oracle日期比较(无效标识符)

我有这个问题:

SELECT TO_CHAR(HON.CREATE_DT,'DD-MM-YYYY') as CREATE_DT, 
       HON.ACCOUNT_NO,(SELECT TO_CHAR(CURRENT_DATE - INTERVAL '7' DAY, 'DD-MM-YYYY') FROM DUAL) AS NV
              FROM medium.HONSCRIBERS HON, 
                   medium.HONSCRIBER_TEXT pcode, 
                   medium.ACCESS_NUMBERS accnr
              WHERE 
                accnr.STATUS_CD = 'CU' AND
                pcode.TRADING_AS ='7777777'AND
                HON.ACCOUNT_NO=pcode.ACCOUNT_NO AND
                HON.ACCOUNT_NO=accnr.ACCOUNT_NO 
Run Code Online (Sandbox Code Playgroud)

它返回:

[0] => Array
        (
            [CREATE_DT] => 28-02-2008
            [ACCOUNT_NO] => 20340322
            [NV] => 20-05-2011
        )

    [1] => Array
        (
            [CREATE_DT] => 28-02-2008
            [ACCOUNT_NO] => 20340322
            [NV] => 20-05-2011
        )
Run Code Online (Sandbox Code Playgroud)

我需要比较日期CREATE_DT和NV我的查询:

SELECT TO_CHAR(HON.CREATE_DT,'DD-MM-YYYY') as CREATE_DT, 
       HON.ACCOUNT_NO,(SELECT TO_CHAR(CURRENT_DATE - INTERVAL '7' DAY, 'DD-MM-YYYY') FROM DUAL) AS NV
              FROM medium.HONSCRIBERS …
Run Code Online (Sandbox Code Playgroud)

sql oracle date ora-00904

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

是否可以查询逗号分隔列的特定值?

我有(并且不拥有,所以我无法更改)具有类似于此的布局的表.

ID | CATEGORIES
---------------
1  | c1
2  | c2,c3
3  | c3,c2
4  | c3
5  | c4,c8,c5,c100
Run Code Online (Sandbox Code Playgroud)

我需要返回包含特定类别ID的行.我首先使用LIKE语句编写查询,因为值可以在字符串中的任何位置

SELECT id FROM table WHERE categories LIKE '%c2%'; 将返回第2行和第3行

SELECT id FROM table WHERE categories LIKE '%c3%' and categories LIKE '%c2%'; 会再次给我第2行和第3行,但不是第4行

SELECT id FROM table WHERE categories LIKE '%c3%' or categories LIKE '%c2%'; 再次给我第2,3和4行

我不喜欢所有的LIKE陈述.我FIND_IN_SET()在Oracle文档中找到了,但它似乎不适用于10g.我收到以下错误:

ORA-00904: "FIND_IN_SET": invalid identifier
00904. 00000 -  "%s: invalid identifier"
Run Code Online (Sandbox Code Playgroud)

运行此查询时:( SELECT id FROM table WHERE FIND_IN_SET('c2', categories);来自文档的示例)或此查询:( …

sql csv oracle ora-00904 denormalized

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

在 DATE 列上使用“MERGE INTO”和“SELECT FROM Dual”时出现 ORA-00904“无效标识符”错误

我在 Oracle 数据库上有以下 PL/SQL 存储过程:

PROCEDURE MyProcedure (
    p_id IN NUMBER
  , p_date IN DATE
  , p_num IN NUMBER) 
  AS
  BEGIN
    MERGE INTO MY_TABLE mytable
    USING (SELECT
            p_id,
            p_date,
            p_num
          FROM dual) temp
    ON (mytable.myid = temp.p_id AND mytable.mydate = temp.p_date)
  WHEN MATCHED THEN
    UPDATE SET
      DIFFERENCE = temp.p_num,
  WHEN NOT MATCHED THEN
    INSERT VALUES (
      MY_TABLEIDSEQ.NEXTVAL,
      temp.p_id,
      temp.p_date,
      temp.p_num);
END MyProcedure;
Run Code Online (Sandbox Code Playgroud)

MY_TABLE表定义如下:

CREATE TABLE "MY_DBO"."MY_TABLE" 
   (
     "MYTABLEID" NUMBER(38,0),
     "MYID" NUMBER(38,0),
     "MYDATE" DATE,
     "MYNUM" NUMBER(25,4)
   )
Run Code Online (Sandbox Code Playgroud)

但是,当我使用输入字段的有效值运行存储过程时,出现以下错误:

ORA-00904: "TEMP"."P_DATE": 无效标识符 …

oracle merge date ora-00904 dual-table

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

ROWID作为PL/SQL中的参数

我正在尝试创建一个帮助器存储过程来保存重复的代码.

我编写了以下存储过程,它接受表名,status_id和ROWID.

PROCEDURE sp_update_stage_status(p_table_name IN VARCHAR2,
                                 p_status_id IN NUMBER,
                                 p_rowid IN ROWID)
AS
BEGIN       
  execute immediate 'UPDATE ' || p_table_name
                 || ' SET STATUS_ID = ' || p_status_id 
                 || ' WHERE ROWID = ' || p_rowid;       
END;
Run Code Online (Sandbox Code Playgroud)

但是每当我执行它时,我得到以下内容.

ORA-00904: "AAATQEAAEAAAAHEAAB": invalid identifier
ORA-06512: at "OBR_DEV.PKG_COMMON", line 32
ORA-06512: at "OBR_DEV.PKG_DIRECTORY", line 449
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

oracle plsql stored-procedures rowid ora-00904

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

我无法在SQL代码中计算除法

以下代码没有问题:

select donem, mekankodu, count(yayin_kodu) yc, 
       SUM(CASE WHEN iade =0 THEN 1 ELSE 0 END) yys
from 
(    select donem,
            bayi_adi,
            bayi_kodu,
            x.mekankodu,
            mekan_adi,
            mekan_tipi,
            yayin_kodu,
            yayin_adi,
            sum(x.b2b_dagitim + x.b2b_transfer) sevk,
            sum(x.b2b_iade) iade,
            sum(x.b2b_dagitim + x.b2b_transfer - x.b2b_iade) satis
    from mps_view2 x
    where x.donem = '200910'
    and x.yayin_kodu in (93,95,98,99,103,174,307,309,311,489,491,495,533,534,538,605,641,642,650,2539,
                         2697,4560,5049,5772,5950,5980,7318,7440,8086,8524,11161,12707,12708,12709,14376,
                         15107,15309,15633)
    and x.mekankodu in (31851,38569,7123,7403,7481)
    group by donem, bayi_adi, bayi_kodu, mekankodu, mekan_adi, mekan_tipi, yayin_kodu, yayin_adi
    order by donem, bayi_kodu, mekan_adi, yayin_adi
)
group by donem, mekankodu
Run Code Online (Sandbox Code Playgroud)

当我想要包含yc/yss在我的结果表中时,我 …

sql oracle select ora-00904

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

这个SQL查询有什么问题?

以下查询返回"ORA-00904错误:SATIS:无效的标识符".当我删除该行时HAVING satis > 0,它的工作原理.我该怎么办?

SELECT donem, bolge_adi, sehir_tasra "1=?, 2=T", 
       COUNT(DISTINCT mekankodu) "M.SAYISI",
       SUM(b2b_dagitim + b2b_transfer - b2b_iade) satis
FROM mps_view2
WHERE donem IN ('200612','200712','200812','200912')
AND (ob IS NOT NULL OR b2b_ob IS NOT NULL)
GROUP BY donem, bolge_adi, sehir_tasra
HAVING satis > 0
ORDER BY donem, bolge_adi, sehir_tasra
Run Code Online (Sandbox Code Playgroud)

sql oracle ora-00904

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

为什么我一直得到这个被诅咒的SQL*Plus无效标识符错误?

当我尝试运行以下脚本时,我不断收到无效的标识符异常:javax.servlet.ServletException:java.sql.SQLException:[Oracle] [ODBC] [Ora] ORA-00904:"CUSTID":标识符无效

   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
   conn = DriverManager.getConnection("jdbc:odbc:rreOracle","xxxxxx","xxxxxxxx"); 
   stmt = conn.createStatement(); 
  PreparedStatement preparedStatement;

      //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 DOB=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");


   preparedStatement = conn.prepareStatement("UPDATE customer"
+ " SET customer.cust_ID=?, customer.sale_ID=?, customer.first_Name=?, customer.mI=?, customer.last_Name=?, customer.street_Name=?, customer.city=?, customer.state=?, customer.zip_Code=?,customer. DOB=?, customer.agent_ID=?, customer.home_Phone=?, customer.cell_Phone=?, customer.profession=?, customer.employer=?, customer.referrer=?"
+ " WHERE customer.cust_ID=custID ") ;

   preparedStatement.setInt(1, …
Run Code Online (Sandbox Code Playgroud)

java sql oracle jdbc ora-00904

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