consultas SQL para determinar si tabla espacial de Oracle contiene curvas
-
09-10-2019 - |
Pregunta
He estado luchando para crear una consulta SQL de Oracle que me diga si mi tabla SDO contiene curvas o arcos. Yo sé que el sdo_elem_info contiene la información que necesita, pero no sé cómo utilizar SQL para separar el etype e interpretación de la sdo_elem_info.
Hasta ahora, todo lo que tengo es: seleccione tbl.shape.sdo_elem_info de mi_tabla TBL
Solución
Puede utilizar la función de tabla para extraer los elementos sdo_elem_info_array, entonces pivote que y Agregada las filas resultantes para producir una fila por cada elemento, con una columna para offset, etype e interpretación.
Algo como esto debe darle su consulta ... (advertencia: no probado)
WITH elem_info AS (
SELECT
TRUNC((ROWNUM - 1) / 3, 0) element_no
, MAX(DECODE(MOD(ROWNUM, 3), 1, t.COLUMN_VALUE, NULL)) offset
, MAX(DECODE(MOD(ROWNUM, 3), 2, t.COLUMN_VALUE, NULL)) etype
, MAX(DECODE(MOD(ROWNUM, 3), 0, t.COLUMN_VALUE, NULL)) interpretation
FROM my_table tbl
, TABLE(tbl.shape.sdo_elem_info) t
GROUP BY TRUNC((ROWNUM - 1) / 3, 0)
)
SELECT DECODE(COUNT(*), 0, 'false', 'true')
FROM elem_info ei
WHERE ei.etype IN (1005, 2005)
OR ei.interpretation IN (2, 4)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow