To distribute an application and a database without disclosing the logic contained within procedures, functions, triggers, events, and views, you can obscure the contents of these objects using the SET HIDDEN clause of the ALTER PROCEDURE, ALTER FUNCTION, ALTER TRIGGER, ALTER EVENT and ALTER VIEW statements.
You must be the owner of the object, have the ALTER ANY OBJECT system privilege, or have one of the following privileges:
The SET HIDDEN clause obfuscates the contents of the associated objects and makes them unreadable, while still allowing the objects to be used. You can also unload and reload the objects into another database.
The modification is irreversible, and deletes the original text of the object. Preserving the original source for the object outside the database is required.
However, setting the preserve_source_format database option to On does not prevent the SET HIDDEN clause from deleting the original source definition of the object.
Option | Action |
---|---|
Hide an individual object |
Execute the appropriate ALTER statement with the SET HIDDEN clause to hide a single procedure, function, trigger, event, or view. |
Hide all objects of a specific type |
Execute the appropriate ALTER statement with the SET HIDDEN clause in a loop to hide all procedures, functions, triggers, events, or views. |
An automatic commit is executed. The object definition is no longer visible. The object can still be directly referenced, and is still eligible for use during query processing.