Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ORA-00942:表或视图不存在,但查询在SQL developer上运行_Java_Sql_Oracle_Oracle Sqldeveloper - Fatal编程技术网

Java ORA-00942:表或视图不存在,但查询在SQL developer上运行

Java ORA-00942:表或视图不存在,但查询在SQL developer上运行,java,sql,oracle,oracle-sqldeveloper,Java,Sql,Oracle,Oracle Sqldeveloper,我得到了一个oracle sql查询,它在oracle sql developer上运行良好,但当我从Java准备语句运行它时,sql异常抛出为“ORA-00942:表或视图不存在”,用户获得了上述3个模式的所有特权。 这个查询有问题吗?目前我似乎找不到问题,仍然在调试sql字符串,也可以在sql developer中执行 SQL查询 SELECT CLI_CLIENT.NAME ,CLI_CLIENT.CLIENT_ID, AA.SEARCHES, (SELECT COUNT(*) FRO

我得到了一个oracle sql查询,它在oracle sql developer上运行良好,但当我从Java准备语句运行它时,sql异常抛出为“ORA-00942:表或视图不存在”,用户获得了上述3个模式的所有特权。 这个查询有问题吗?目前我似乎找不到问题,仍然在调试sql字符串,也可以在sql developer中执行

SQL查询

SELECT CLI_CLIENT.NAME ,CLI_CLIENT.CLIENT_ID,

AA.SEARCHES,

(SELECT COUNT(*) FROM RES_BOOKING,CLI_WEB_USER WHERE  RES_BOOKING.BOOKED_USER=CLI_WEB_USER.ADM_USER_ID

AND TRUNC(RES_BOOKING.BOOKING_DATE) BETWEEN '01-MAR-16' AND '24-MAR-16' AND CLI_WEB_USER.CLIENT_ID=CLI_CLIENT.CLIENT_ID)AS BOOKINGS

FROM CLI_CLIENT,

(SELECT CWU.CLIENT_ID,

COUNT(ST.OPERATION) AS SEARCHES 

FROM STAT.ST_TRANSACTION ST , CLI_WEB_USER CWU , CACHE.CACC_CRITERIA CC , CACHE.CACC_CRITERIA_STATS CS

 WHERE ST.USER_NAME=CWU.USERNAME

 AND ST.OPERATION LIKE 'OTA_HotelAvailRQ%'

 AND TRUNC(ST.TRS_TIMESTAMP) BETWEEN '01-MAR-16' AND '24-MAR-16'

AND CWU.CLIENT_ID IN (10975,10040)

AND CC.CRITERIA_ID=CS.CRITERIA_ID

AND CS.SESSION_ID=ST.SESSION_ID

AND CS.DISTRIBUTION_CHANNEL='W'

 GROUP BY CLIENT_ID, CWU.CLIENT_ID

)AA

WHERE CLI_CLIENT.CLIENT_ID=AA.CLIENT_ID;
Java异常

 java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

检查您是否在SQL Developer和java应用程序中以相同的用户帐户连接到数据库。很可能情况并非如此,您的java应用程序无法访问查询中的一个或多个表。

检查您是否在SQL Developer和java应用程序中以相同的用户帐户连接到数据库。很可能情况并非如此,java应用程序无法访问查询中的一个或多个表。

以下是您在更好的视图和性能下的查询:

select C.NAME,
       C.CLIENT_ID,
       AA.SEARCHES,
       (select count(1) 
          from RES_BOOKING R
          join CLI_WEB_USER U
            on U.ADM_USER_ID = R.BOOKED_USER
           and trunc(R.BOOKING_DATE) 
                between '01-MAR-16' 
                    and '24-MAR-16' 
           and U.CLIENT_ID = C.CLIENT_ID
        ) AS BOOKINGS
  from CLI_CLIENT C
  join 
       (select CWU.CLIENT_ID as CLIENT, 
               count(ST.OPERATION) AS SEARCHES 
          from STAT.ST_TRANSACTION ST 
          join CLI_WEB_USER CWU
            on CWU.USERNAME = ST.USER_NAME
          join CACHE.CACC_CRITERIA CC
            on CC.CRITERIA_ID = CS.CRITERIA_ID
          join CACHE.CACC_CRITERIA_STATS CS
            on CS.SESSION_ID = ST.SESSION_ID
         where ST.OPERATION like 'OTA_HotelAvailRQ%'
           and trunc(ST.TRS_TIMESTAMP) 
                between '01-MAR-16' 
                    and '24-MAR-16'
           and CWU.CLIENT_ID in (10975,10040)
           and CS.DISTRIBUTION_CHANNEL='W'
      group by CLIENT_ID, CLIENT -- OLD OF CLIENT -> CWU.CLIENT_ID
        ) AA
    on AA.CLIENT = C.CLIENT_ID; -- OLD OF AA.CLIENT -> AA.CLIENT_ID
然后将查询划分为块并逐个执行。比如说,

第一部分:

select C.NAME,
       C.CLIENT_ID,
       (select count(1) 
          from RES_BOOKING R
          join CLI_WEB_USER U
            on U.ADM_USER_ID = R.BOOKED_USER
           and trunc(R.BOOKING_DATE) 
                between '01-MAR-16' 
                    and '24-MAR-16' 
           and U.CLIENT_ID = C.CLIENT_ID
        ) AS BOOKINGS
  from CLI_CLIENT C;

第二部分:获取连接块内的代码,等等。如果您在该块中遇到错误,请继续进行分割。

以下是您在更好的视图和性能下的查询:

select C.NAME,
       C.CLIENT_ID,
       AA.SEARCHES,
       (select count(1) 
          from RES_BOOKING R
          join CLI_WEB_USER U
            on U.ADM_USER_ID = R.BOOKED_USER
           and trunc(R.BOOKING_DATE) 
                between '01-MAR-16' 
                    and '24-MAR-16' 
           and U.CLIENT_ID = C.CLIENT_ID
        ) AS BOOKINGS
  from CLI_CLIENT C
  join 
       (select CWU.CLIENT_ID as CLIENT, 
               count(ST.OPERATION) AS SEARCHES 
          from STAT.ST_TRANSACTION ST 
          join CLI_WEB_USER CWU
            on CWU.USERNAME = ST.USER_NAME
          join CACHE.CACC_CRITERIA CC
            on CC.CRITERIA_ID = CS.CRITERIA_ID
          join CACHE.CACC_CRITERIA_STATS CS
            on CS.SESSION_ID = ST.SESSION_ID
         where ST.OPERATION like 'OTA_HotelAvailRQ%'
           and trunc(ST.TRS_TIMESTAMP) 
                between '01-MAR-16' 
                    and '24-MAR-16'
           and CWU.CLIENT_ID in (10975,10040)
           and CS.DISTRIBUTION_CHANNEL='W'
      group by CLIENT_ID, CLIENT -- OLD OF CLIENT -> CWU.CLIENT_ID
        ) AA
    on AA.CLIENT = C.CLIENT_ID; -- OLD OF AA.CLIENT -> AA.CLIENT_ID
然后将查询划分为块并逐个执行。比如说,

第一部分:

select C.NAME,
       C.CLIENT_ID,
       (select count(1) 
          from RES_BOOKING R
          join CLI_WEB_USER U
            on U.ADM_USER_ID = R.BOOKED_USER
           and trunc(R.BOOKING_DATE) 
                between '01-MAR-16' 
                    and '24-MAR-16' 
           and U.CLIENT_ID = C.CLIENT_ID
        ) AS BOOKINGS
  from CLI_CLIENT C;

第二部分:获取连接块内的代码,等等。如果在该块中出现错误,请继续分割。

是的,我也检查了这一点,这就是问题所在,所有表都可以从Java端单独访问,您好,您可能使用了不同的连接凭据。如果您正在使用数据源,请在其凭据下进行检查。连接也可以,但我没有提到我当前使用的模式,只提到了其他模式,添加后如何运行查询。。塔克斯!schema=useraccount。很高兴听到这就是问题所在。是的,我也检查了这一点,这就是问题所在,所有的表都可以从Java端单独访问,您好,您可能使用了不同的连接凭据。如果您正在使用数据源,请在其凭据下进行检查。连接也可以,但我没有提到我当前使用的模式,只提到了其他模式,添加后如何运行查询。。塔克斯!schema=useraccount。很高兴听到这就是问题所在。请尝试将您的查询划分为小查询并尝试逐步检查。此外,您可以使用JOIN提高查询效率,将查询划分为小查询并尝试逐步检查,您可以使用JOIN来提高查询效率EP我按照您所说的划分查询并逐步运行,发现了问题,因为我没有提到我当前使用的模式,对于“CLI_CLIENT”之类的表,我应该使用TBX.CLI_CLIENT,但我目前在TBX模式中,无论我添加了什么,它都起到了作用,现在我正在尝试你的查询!!非常感谢您的询问和解释!是的,我按照你说的划分了我的查询,然后一步一步地运行,发现了问题所在,因为我没有提到我当前使用的模式,对于“CLI_CLIENT”之类的表,我应该使用TBX.CLI_CLIENT,但我当前在TBX模式中,不管怎样,现在我添加了它,它工作了,现在我正在尝试您的查询!!非常感谢您的询问和解释!