requête SQL pour déterminer si la table contient spatiale oracle courbes

StackOverflow https://stackoverflow.com/questions/3971693

  •  09-10-2019
  •  | 
  •  

Question

J'ai eu du mal à créer une requête SQL Oracle qui me dira si ma table SDO contient des courbes ou des arcs. Je sais que le sdo_elem_info contient l'information nécessaire, mais je ne sais pas comment utiliser SQL pour séparer le etype et l'interprétation de la sdo_elem_info.

Jusqu'à présent, tout ce que j'ai: select tbl.shape.sdo_elem_info de ma_table TBL

Était-ce utile?

La solution

Vous pouvez utiliser la fonction de table pour extraire les éléments de sdo_elem_info_array, alors que pivot et agréger les lignes résultantes pour obtenir une ligne par élément, avec une colonne pour compenser, etype et d'interprétation.

Quelque chose comme cela devrait vous donner à votre requête ... (avertissement: non testé)

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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top