1 FUNCTION OGC_Length(
2 g ST_Geometry) RETURN NUMBER DETERMINISTIC IS
3 BEGIN
4 IF(nls_upper(OGC_GeometryType(g)) IN ('LINESTRING', 'ST_CIRCULARSTRING', 'ST_COMPOUNDCURVE', 'ST_LINESTRING')) THEN
5 RETURN TREAT(g AS ST_Curve).ST_Length();
6 END IF;
7 IF(nls_upper(OGC_GeometryType(g)) IN ('MULTILINESTRING', 'ST_MULTILINESTRING')) THEN
8 RETURN TREAT(g AS ST_MultiCurve).ST_Length();
9 END IF;
10 RETURN NULL;
11 END OGC_Length;