I needed to "fully qualify the package":
select sde.st_geometry_operators.st_length_f(shape) <-- Don't forget the _f at the end
Interestingly, just adding
.st_geometry also seems to work for
st_length(). I discovered this by accident:
From the documentation:
Because the st_geometry functions are exposed as database operators,
and typically consumed by way of SQL statements, leveraging the
st_geometry functionality with PL/SQL requires referencing the
underlying functions by fully qualifying their appropriate package and
For example, to leverage the sde st_astext operator in PL/SQL, the
call must reference the fully qualified package where the function
resides. The following line of code demonstrates setting a local
variable of type CLOB to the output of the st_astext function.
All geometry operators, such as st_astext, st_centroid,
st_numgeometries, etc. reside in the st_geometry_operators package.
All relational operators, such as st_intersects, st_within,
st_contains, etc. reside in the st_relation_operators package.
Note: When referencing any st_* operator as a function, remember to
include the _f clause after its name to reference the appropriate
function in the package body.
Here's a screencap of what the package looks like in an SQL client.