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
|--USAGE ON LANGUAGE--+-SPL--+----------------------------------|
+-C----+
'-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;