función escalar VERIFY_ROLE_FOR_USER

La función VERIFY_ROLE_FOR_USER devuelve un valor que indica si roles asociados con el ID de autorización especificado en el primer argumento se incluyen en los nombres de rol que se especifican en la lista del segundo argumento.

Si la única forma de adquirir un rol es bajo una conexión de confianza que está asociada a un contexto de confianza, la función VERIFY_ROLE_FOR_USER es equivalente a la función VERIFY_TRUSTED_CONTEXT_ROLE_FOR_USER.

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualVERIFY_ROLE_FOR_USER( SESSION_USERUSER ,expresión-nombre-rol )

El esquema es SYSIBM.

SESSION_USER o USER
Especifica el valor del registro especial SESSION_USER (o USER).
rol-nombre-expresión
Expresión que especifica un nombre de función. La existencia del nombre de rol en el servidor actual no está verificada. role-name-expression debe devolver un tipo de datos de cadena de caracteres incorporado o un tipo de datos de cadena gráfica que no sea un LOB. La cadena debe tener una longitud que no exceda la longitud máxima de un identificador SQL. El contenido de la cadena no se escribe en mayúsculas y no se justifica a la izquierda.

El resultado de la función es un entero grande. El resultado no puede ser nulo.

El resultado es 1 si alguno de los roles asociados al usuario identificado por el registro especial SESSION_USER (o USER) está en la lista de roles especificada por role-name-expression. De lo contrario, el resultado es 0.

Notas

Determinismo:
La función VERIFY_ROLE_FOR_USER es determinista dentro de una conexión de confianza. No es determinista en las conexiones de confianza. Se puede hacer referencia a la función en una sentencia CREATE MASK o CREATE PERMISSION y se tiene en cuenta para expresiones de tabla o la fusión de vistas.

ejemplos

Ejemplo 1:

Suponga que las siguientes declaraciones se han emitido para crear funciones específicas y el contexto de confianza CTX1:

CREATE ROLE EMPLOYEE;
COMMIT;

CREATE ROLE MGR;
COMMIT;

CREATE ROLE PAYROLL;
COMMIT;

CREATE TRUSTED CONTEXT CTX1
	BASED UPON CONNECTION USING SYSTEM AUTHID ADMF001
	ATTRIBUTES (ADDRESS '9.30.131.203', ENCRYPTION 'LOW')
	DEFAULT ROLE EMPLOYEE
	ENABLE
	WITH USE FOR SAM, JOE ROLE MGR WITH AUTHENTICATION;

COMMIT;

Joe, que es gerente, emite la siguiente consulta dinámica a través de la conexión de confianza CTX1 para ver los salarios de los empleados de la tabla DSN8910.EMP que están en su departamento:

SELECT SALARY FROM DSN8910.EMP
	WHERE VERIFY_ROLE_FOR_USER(SESSION_USER,'MGR','PAYROLL')= 1
	AND WORKDEPT = ?;
Ejemplo 2:
Para el siguiente ejemplo, supongamos que un usuario con autoridad SECADM necesita controlar el acceso de usuarios específicos que ejecutan una instrucción que accede a una tabla:
¿Está el usuario actual, B, utilizando el rol X para ejecutar una declaración propiedad del usuario C?
SESSION_USER = B AND
VERIFY_ROLE_FOR_USER(SESSION_USER, 'X')
¿Está el usuario actual, B, utilizando el rol X para ejecutar una declaración perteneciente al rol D?
SESSION_USER = B AND
VERIFY_ROLE_FOR_USER(SESSION_USER, 'X')
¿Está el usuario actual, B, utilizando el rol B para ejecutar una sentencia dinámica?
SESSION_USER = B AND
VERIFY_ROLE_FOR_USER(SESSION_USER, 'B')