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: view "BRINDAVOINE.FME_SCHEMA_SIGE" comporte des erreurs」というエラー メッセージが表示されます。ALTER VIEW BRINGAVOINE.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 に答える