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.

This is the syntax of the USAGE ON LANGUAGE clause for specifying a language-level privilege to revoke:
Language-Level Privileges

1  USAGE ON LANGUAGE
1 SPL
1 C
1 JAVA

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.

To revoke the Usage privilege on a programming language from a user or role, issue a REVOKE statement that includes the USAGE ON LANGUAGE keywords and a keyword that specifies the programming language. If this statement succeeds, any user or role that you specify in the FROM clause can no longer register UDRs that are written in the specified language. For example, if you revoke the default Usage privilege on SPL from PUBLIC, the ability to create SPL routines is taken away from all users (except those who have been individually granted the Usage privilege on the SPL language, or who hold that Usage privilege through a role:
REVOKE USAGE ON LANGUAGE SPL FROM PUBLIC;
You can issue a GRANT USAGE ON LANGUAGE statement to restore Usage privilege on SPL to a restricted group, such as to the role named developers:
GRANT USAGE ON LANGUAGE SPL TO developers;