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 PROCEDUREDe 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.