【问题标题】:ORA - 00933 error in Report BuilderORA - 报表生成器中的 00933 错误
【发布时间】:2016-11-22 12:28:37
【问题描述】:

在报表生成器中创建数据集时,我将 oracle 查询作为表达式传递。 执行报告时出现以下错误。

“ORA - 00933 : SQL 命令未正确结束”

下面是我用来创建数据集的 Oracle 查询。

= "SELECT 
   T.TRAY_NO , 
   MAX(T.PBS) AS PBS, 
   MAX(T.SEG_CODE) AS SEG_CODE, 
   MAX(T.TYPE_CODE) AS TYPE_CODE, 
   MAX(T.WIDTH) AS WIDTH, 
   MAX(DEPTH) AS DEPTH, 
   MAX(LENGTH) AS LENGTH, 
   MAX(ALLOW_FILL) AS ALLOW_FILL, 
   MAX(TOTAL_FILL) AS TOTAL_FILL,  
   MAX(ALLOW_WEIGHT) AS ALLOW_WEIGHT, 
   MAX(TOTAL_WEIGHT) AS TOTAL_WEIGHT, 
   SUM(C.NO_OF_CABLE) AS SUM_NO_OF_CABLES, 
   MAX(IS_FILL_APPROVED) AS OVERFILL_APPROVED, 
   MAX(IS_WEIGHT_APPROVED) AS OVERWEIGHT_APPROVED, 
   MAX(FIRE_SEAL) AS FIREA_WRAPPING, 
   MAX(DESIGN_REF) AS ENOVIA_TREE_PATH, 
   MAX(LAYOUT_DWG_NO) AS WORKPACKAGE, 
   MAX(LAYOUT_DWG_REV) AS STATUS,
   CASE 
WHEN MAX(T.SEG_CODE) IN ('NL','AL','BL') THEN CEIL(SUM(TY.DIAMETER*1.4)/MAX(T.WIDTH)) 
WHEN MAX(T.SEG_CODE) IN ('NQ') THEN CEIL(SUM(TY.DIAMETER*1.1)/MAX(T.WIDTH)) 
WHEN MAX(T.SEG_CODE) IN ('NN','NS','NP','AS','BS','XR') THEN CEIL(SUM(TY.DIAMETER*1.1)/MAX(T.WIDTH)) 
ELSE CEIL(MAX(ROUTE_WIDTH)/MAX(P.WIDTH)) 
END AS NO_OF_LAYERS,

    (SELECT 
     MAX(RRW.ROOM_NO) 
     FROM EL_CMS_RACEWAY_ROOM RRW 
     WHERE RRW.RACEWAY_NO = T.TRAY_NO 
     GROUP BY RRW.RACEWAY_NO) AS ROOM_NO 

    FROM EL_CMS_TRAY T,  EL_CMS_CABLE_TYPE TY, EL_CMS_ROUTE R, EL_CMS_CABLE C,

    (SELECT 
     TRAY_NO, 
      WIDTH,
    CASE 
WHEN SEG_CODE IN ('HV') THEN 30 + SUM_D + 45*(N-1) + 30 
WHEN SEG_CODE IN ('MP') THEN 20 + SUM_D + 43*(N-1) + 20 
WHEN SEG_CODE IN ('MS') THEN 20 + SUM_D + 56*(N-1) + 20 
WHEN SEG_CODE IN ('N6','A6','B6') THEN 20 + SUM_D + 27.5*(N-1) + 20 
WHEN SEG_CODE IN ('AH','BH') THEN 15 + SUM_D + 12*(N-1) + 15 
WHEN SEG_CODE IN ('NH') AND D1=96 THEN 15 + SUM_D + 50*(N-1) + 15 
WHEN SEG_CODE IN ('NH') AND D1=126 THEN 15 + SUM_D + 12*(N-1) + 15 
END ROUTE_WIDTH 
    FROM  
    (
     SELECT 
     RACEWAY_NO R2, 
     COUNT(R.CABLE_NO) N, 
     MAX(CASE WHEN CONDUCTORS=1 THEN DIAMETER*2 ELSE DIAMETER END) D1 
     FROM EL_CMS_ROUTE R, EL_CMS_CABLE C, EL_CMS_CABLE_TYPE TYPE 
     WHERE R.CABLE_NO = C.CABLE_NO 
     AND TYPE.TYPE_CODE=C.TYPE_CODE 
     GROUP BY RACEWAY_NO
     ) , 
     (
      SELECT 
      RACEWAY_NO R1, 
      SUM(CASE WHEN CONDUCTORS=1 AND NO_OF_CABLE=3 THEN DIAMETER*2 ELSE DIAMETER END) SUM_D 
      FROM EL_CMS_ROUTE R, EL_CMS_CABLE C, EL_CMS_CABLE_TYPE TYPE 
      WHERE R.CABLE_NO = C.CABLE_NO 
      AND TYPE.TYPE_CODE=C.TYPE_CODE 
      AND SUBSTR(RACEWAY_NO,5,2) IN ('A6', 'B6', 'N6', 'HV', 'MP', 'MS', 'NH', 'AH', 'BH') 
      GROUP BY RACEWAY_NO
      ), 
      (EL_CMS_TRAY 
       WHERE R1=R2 AND TRAY_NO=R2 
       ORDER BY ROUTE_WIDTH-WIDTH DESC) P 
       WHERE C.TYPE_CODE = TY.TYPE_CODE(+) 
       AND T.TRAY_NO = R.RACEWAY_NO(+) 
       AND R.CABLE_NO = C.CABLE_NO (+) 
       AND T.TRAY_NO = P.TRAY_NO(+) 
       GROUP BY T.TRAY_NO 
       ORDER BY TRAY_NO ;
       "

有人可以建议我如何解决这个错误 (ORA - 00933)。

【问题讨论】:

  • ORA_00933 = 您尝试使用不适当的子句执行 SQL 语句。尝试在数据库上运行您的查询。
  • 我在数据库中运行查询,它运行良好,但只有当我将它作为表达式放置在报表生成器中时,它才会显示错误 (ORA-00933)。
  • 您使用的是 SQL Server 还是 Oracle?标签不一致。
  • Oracle 但我将此查询用作报表生成器中的表达式。

标签: sql sql-server oracle-sqldeveloper business-intelligence


【解决方案1】:

我刚刚遇到这个,因为我有同样的问题。我的查询在 SQL Developer 中运行良好,但是当我尝试在 Visual Studio / Report Builder 中使用相同的查询时,我得到了那个错误。

无论出于何种原因(也许其他人知道原因),我不得不删除最后的分号 (;)。错误消失了,我得到了预期的结果。

【讨论】:

    猜你喜欢
    • 2010-11-22
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 2014-10-23
    • 2017-06-09
    • 2018-09-26
    相关资源
    最近更新 更多