139 - Funciones (encriptado)


Las funciones definidas por el usuario pueden encriptarse, para evitar que sean leídas con "sp_helptext".

Para ello debemos agregar al crearlas la opción "with encryption" antes de "as".

En funciones escalares:

 create function NOMBREFUNCION
 (@PARAMETRO TIPO) 
  returns TIPO
  with encryption
  as 
  begin
   CUERPO
   return EXPRESION
  end

En funciones de tabla de varias sentencias se coloca luego del formato de la tabla a retornar:

 create function NOMBREFUNCION
 (@PARAMETRO TIPO)
 returns @NOMBRETABLARETORNO table-- nombre de la tabla
 --formato de la tabla
 (CAMPO1 TIPO,
  CAMPO2 TIPO,
  CAMPO3 TIPO
 )
 with encryption
 as
 begin
   insert @NOMBRETABLARETORNO
    select CAMPOS from TABLA
     where campo OPERADOR @PARAMETRO
   RETURN
 end

En funciones con valores de tabla en línea:

 create function NOMBREFUNCION
 (@PARAMETRO TIPO=VALORPORDEFECTO)
 returns table
 with encryption
 as
 return (SELECT);

Veamos un ejemplo:

 create function f_libros
 (@autor varchar(30)='Borges')
 returns table
 with encryption
 as
 return (
  select titulo,editorial
  from libros
  where autor like '%'+@autor+'%'
 );

Si ejecutamos el procedimiento almacenado del sistema "sp_helptext" seguido del nombre de la función creada anteriormente, SQL Server mostrará un mensaje indicando que tal función está encriptada.


Retornar