Crear definiciones de procedimientos ofuscados para un script de registro

Si piensa crear un script que los usuarios ejecuten para registrar los procedimientos almacenados en las bases de datos, puede utilizar un procedimiento de derivación que tome como entrada el cuerpo y la definición de procedimiento y que devuelva un mandato CREATE OR REPLACE PROCEDURE que tenga texto de cuerpo ofuscado. Por ejemplo:
TEST.TESTSCH(USR)=> CREATE OR REPLACE PROCEDURE return_wrap(TEXT, TEXT) 
RETURNS TEXT LANGUAGE NZPLSQL AS 
BEGIN_PROC 
  DECLARE 
    proc alias for $1; 
    body alias for $2; 
    enc text; 
    sql text; 
    BEGIN 
      enc := wrap_nzplsql(body); 
      sql := proc || ' ' || '' || quote_literal(enc) || '';
      return sql; 
    END; 
END_PROC;
CREATE PROCEDURE
De forma parecida al procedimiento wrap_proc(), especifique la definición principal CREATE OR REPLACE como una serie de texto entrecomillada en el primer valor de entrada y especifique el contenido BEGIN PROC/END PROC sin comillas en el segundo valor de entrada. Por ejemplo:
TEST.TESTSCH(USR)=> CALL return_wrap('CREATE OR REPLACE PROCEDURE customer() 
RETURNS INT4 LANGUAGE NZPLSQL AS', BEGIN_PROC BEGIN RAISE NOTICE 'The 
customer name is alpha'; END; END_PROC);                             
                           return_wrap
----------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE customer() RETURNS INT4 LANGUAGE NZPLSQL 
AS 
'TlpQU1FMV1JBUDEwaTVJeHJnV1BLd1o0ZDVtNEtNMGxKQT09JCtiSlVDS1NHbkVrdVZja
01JR3Nrc2dTZlExWDdkaUpDeHdZWUp2dmlrUkZIeEpEQnR6dE1JSHMxOHRTR08xMG1IczJ
FSk92R2F0Ti8KMGhKTGlUUEdIZz09'
(1 row)

El valor de retorno es un mandato CREATE OR REPLACE PROCEDURE que puede utilizar en el script de registro para definir el procedimiento almacenado sin mostrar el texto de cuerpo de procedimiento al usuario de script.