Language-Level Privileges
To register or drop a UDR written in the SPL, C, or Java™ languages, a user must hold the Usage privilege on the programming language in which the routine is written.
Each REVOKE USAGE ON LANGUAGE statement can specify no more than one programming language.
When a user registers a UDR that is written in the SPL, C, or Java language, the database server verifies that the user has the Usage privilege on the language in which the UDR is written. If the user does not, the CREATE FUNCTION or CREATE PROCEDURE statement fails with an error. If the IFX_EXTEND_ROLE configuration parameter has enabled the built-in EXTEND role, only users who also hold that role can register or drop UDRs written in the C language or in the Java language, even if the users hold USAGE ON LANGUAGE privileges for those languages.
REVOKE USAGE ON LANGUAGE SPL FROM PUBLIC;
GRANT USAGE ON LANGUAGE SPL TO developers;