【发布时间】:2011-06-22 17:26:59
【问题描述】:
我想针对数据库中具有合适列的每个表运行 Oracle 验证函数。 验证可以简单地针对一个表运行:
SELECT
count (*)
FROM
Table_name t
Where
SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(t.Column_name, 0.005) <> 'TRUE';
这适用于单个表,但由于有超过 100 个要测试,我想使用子查询将它与 Oracle 元数据表合并,从而使整个事情自动化。我想出了两个变体,但都不起作用,我猜是因为它无法从子查询内部传递变量。 我的两个尝试是:
SELECT TABLE_NAME tab, COLUMN_NAME col, (select count(*) from tab where sdo_geom.validate_geometry(tab.col, 0.005) <> 'TRUE')
From
All_Tab_Columns
where
owner = 'WCCDATA' and DATA_TYPE = 'SDO_GEOMETRY'
返回:
SQL 错误:ORA-00904:“TAB”。“COL”:标识符无效 00904. 00000 - "%s: 无效标识符"
和
SELECT count(*)
From
(SELECT
TABLE_NAME, COLUMN_NAME as col
FROM
All_Tab_Columns
where
owner = 'WCCDATA' and DATA_TYPE = 'SDO_GEOMETRY') subquery
WHERE sdo_geom.validate_geometry(subquery.col, 0.005) <> 'TRUE';
返回:
ORA-06512:在“MDSYS.SDO_GEOM”,第 2204 行 00942. 00000 - “表或视图不存在”
有人有什么想法吗?谢谢。
【问题讨论】:
标签: oracle