0

阿罗哈

这是我的目的:我需要在视图中收集有关我的 OracleDB 的一些基本信息。该怎么办 ?要在 ETL 中将其用作模式资源,我可以查询以限定我将翻译和认证的数据。

我没有以 SYS 身份登录。所以,这是我的观点:

    CREATE OR REPLACE FORCE VIEW "BRINDAVOINE".FME_SCHEMA_SIGE
   AS
   SELECT S.TABLE_NAME AS "feature_type",
          S.COLUMN_NAME AS "attribute_name",
          CASE S.DATA_TYPE
             WHEN 'BLOB'
             THEN
                'fme_buffer'
             WHEN 'CHAR'
             THEN
                CASE
                   WHEN S.DATA_LENGTH IS NULL THEN 'fme_char(400)'
                   ELSE 'fme_char(' || S.DATA_LENGTH || ')'
                END
             WHEN 'DATE'
             THEN
                'fme_date'
             WHEN 'NUMBER'
             THEN
                CASE
                   WHEN S.DATA_LENGTH IS NULL
                   THEN
                      'fme_decimal(400,'
                   ELSE
                         'fme_decimal('
                      || S.DATA_LENGTH
                      || ','
                      || CASE
                            WHEN S.DATA_PRECISION IS NULL THEN '2)'
                            ELSE S.DATA_PRECISION || ')'
                         END
                END
             WHEN 'VARCHAR2'
             THEN
                CASE
                   WHEN S.DATA_LENGTH IS NULL THEN 'fme_char(400)'
                   ELSE 'fme_char(' || S.DATA_LENGTH || ')'
                END
             WHEN 'NVARCHAR2'
             THEN
                CASE
                   WHEN S.DATA_LENGTH IS NULL THEN 'fme_char(400)'
                   ELSE 'fme_char(' || S.DATA_LENGTH || ')'
                END
             ELSE
                S.DATA_TYPE
          END
             AS "attribute_data_type",
          '' AS "geometry_type"
     FROM SYS.ALL_TAB_COLUMNS S
    WHERE     S.OWNER = 'A_REIMS'
          AND S.TABLE_NAME NOT LIKE '%RELATION'
          AND S.TABLE_NAME IN (SELECT NOM
                                 FROM A_DESIGN_REIMS.APICD_COMPOSANT
                                WHERE NUMERO_MODELE = 1 AND action != 2)
          AND NOT REGEXP_LIKE(S.COLUMN_NAME,
                              '(APIC_.*)|_([STXYLO]|S[GT]|[XY][12])$');

不幸的是,当我尝试查询时,我收到一条错误消息:错误的“ORA-04063:查看“BRINDAVOINE.FME_SCHEMA_SIGE”comporte des erreurs”。我尝试了 ALTER VIEW BRINDAVOINE.FME_SCHEMA_SIGE COMPILE,但它似乎没有改变。

这是我的问题:可以从 sys."view" 创建视图吗?如果是这样,为什么我不能创建这个视图?

提前致谢,

4

1 回答 1

0

您应该能够创建查询 SYSTEM 视图的视图。我能够通过删除对 A_DESIGN_REIMS.APICD_COMPOSANT 的引用来编译您的视图(这当然不存在于我的数据库中)。

通过使用 SQLPlus 命令“show errors”(在创建视图之后立即)或通过查询“user_errors”或“all_errors”视图来检查错误。我的猜测是 BRINDAVOINE 用户缺少必要的权限。

于 2012-05-29T17:09:07.770 回答