Oracle视图sql注释错误

Oracle视图sql注释错误,sql,oracle,view,Sql,Oracle,View,当我创建一个视图时,它有许多回车符和一些“-”注释记录代码行。虚构的例子: CREATE VIEW ... AS SELECT P.ID AS PRODUCT_ID, P.PROD_DESC AS PRODUCT_DESC, P."COMMENT" AS PRODUCT_COMMENT, P.ACTIVE_IND AS PRODUCT_ACTIVE_IND, -- SKU.SKU AS SKU, SKU.PRES_DESC AS SKU_PRESENTATION_DE

当我创建一个视图时,它有许多回车符和一些“-”注释记录代码行。虚构的例子:

CREATE VIEW ... AS
SELECT
  P.ID AS PRODUCT_ID,
  P.PROD_DESC AS PRODUCT_DESC,
  P."COMMENT" AS PRODUCT_COMMENT,
  P.ACTIVE_IND AS PRODUCT_ACTIVE_IND,
  --
  SKU.SKU AS SKU,
  SKU.PRES_DESC AS SKU_PRESENTATION_DESC
FROM PRODUCTS P
  LEFT JOIN SKUS SKU ON P.PRODUCT_ID = SKU.PRODUCT_ID
WHERE P.DELETED = 0           -- Non-deleted products only
  AND SKU.DELETED = 0         -- Non-deleted SKUs only
  AND P.CAT_ID NOT IN (1, 3)  -- Exclude promo and sandbox items
ORDER BY P.ID
当最初实例化时,视图很好,当我导出DDL时,它看起来与实例化的格式相同。然而,一段时间后,视图SQL会被重新格式化,并神秘地将多行压缩为一行,有时会导致错误。基于上述内容的示例:

CREATE VIEW ... AS
SELECT
P.ID          AS PRODUCT_ID,
P.PROD_DESC   AS PRODUCT_DESC,
P."COMMENT"   AS PRODUCT_COMMENT,  P.ACTIVE_IND  AS PRODUCT_ACTIVE_IND,  SKU.SKU       AS SKU,  SKU.PRES_DESC AS SKU_PRESENTATION_DESCFROM PRODUCTS P  LEFT JOIN SKUS SKU ON P.PRODUCT_ID = SKU.PRODUCT_IDWHERE P.DELETED = 0 -- Non-deleted products only  AND SKU.DELETED = 0         -- Non-deleted SKUs only AND P.CAT_ID NOT IN (1, 3)  -- Exclude promo and sandbox itemsORDER BY P.ID
关于结果的几点说明:

  • 将填充添加到字段上的AS中(以前与别名对齐,例如“字段作为别名”,而不是突然将所有AS对齐,例如“字段作为别名”)
  • 在SQL中的某个点上(在本例中,在“COMMENT”字段之后),此后的所有行都会丢失其回车符
  • 任何带有双破折号(用作分隔符)的注释行都会完全消失

  • 如前所述,当视图被实例化并且我立即得到DDL时,它看起来与创建它的方式完全相同。但是,在某些情况下,会发生上述情况。Oracle方面是否有什么事情会导致这种情况并试图重新格式化视图SQL?以前有人看到过这种情况吗

    视图SQL被重新格式化,并神秘地将多行压缩为一行,有时会导致错误“这种”重新格式化会导致什么样的错误"?好的,删除注释、折叠行和添加一些填充空格不应改变SQL语句。Oracle本身不会自动完成并重新格式化视图定义。如果DDL正在更改,则环境中的某些东西正在更改它——组织中的某个进程或组织中的某个人可以尝试查询视图(所有\u对象)的数据字典条目,然后检查last_ddl_时间值。如果视图确实在神秘地更改,last_ddl_时间值应该反映更改发生的时间。也许知道更改的时间可以帮助您跟踪更改的原因。您使用哪个SQL客户端运行这些语句?也许您受到一些奇怪的限制的影响在SQL*Plus中添加注释?感谢您的回复。1.如果--注释散布在代码行之间,并且全部放在一行中,则第一条注释之后的所有内容都会被无意中注释掉。2.确认没有人看到自动格式化或类似行为非常有用。3.我已经查看了上一次DDL——它比应该的要晚。4.工具是SQL开发人员。迹象有点指向OCD DBA或使用某种数据库清理类型工具的人的工作。这两种工具似乎都非常不必要,而且会引发风险。