阿罗哈
这是我的目的:我需要在视图中收集有关我的 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" 创建视图吗?如果是这样,为什么我不能创建这个视图?
提前致谢,