pasos para implementar una vpd
TRANSCRIPT
PASOS PARA IMPLEMENTAR UNA VPD
1) Crear un paquete PL/SQL para ajustar al contexto.
CREATE OR REPLACE PACKAGE orders_ctx_pkg IS
PROCEDURE set_custnum;
END;
/
CREATE OR REPLACE PACKAGE BODY orders_ctx_pkg IS
PROCEDURE set_custnum
AS
custnum NUMBER;
WHERE cust_email = SYS_CONTEXT( ' USERENV ' , ' SESSION_USER ');
SELECT cust_no INTO custnum FROM scott.customers
END;
/
1) CREAR UN PAQUETE PL/SQL PARA AJUSTAR AL
CONTEXTO.
CREATE OR REPLACE CONTEXT orders_ctx USING orders_cxt_pkg;
2) CREAR UN CONTEXTO DE LA
APLICACIÓN.
CREATE TRIGGER set_custno_ctx_trig AFTER LOGON ON DATABASE
BEGIN
sysadmin_vpd.orders_ctx_pkg.set_custnum;
END;
/
3) CREAR UN INICIO DE SESIÓN DE ACTIVACIÓN PARA EJECUTAR
E CONTEXTO DE APLICACIÓN PL/SQL
CREATE OR REPPLACE FUNCTION get_user_orders(
schema_p IN VARCHAR2,
table_p IN VARCHAR2)
RETURN VARCHAR2
AS
orders_pred VARCHAR2 (400);
BEGIN
orders_pred := ' cust_no = SYS_CONTEXT(' ' orders_ctx' ', ' 'cust_no' ') ';
RETURN orders_pred;
END;
/
4) CREAR LA FUNCIÓN PL/SQL QUE GENERA EL
PREDICADO.
BEGIN
DBMS_RLS.ADD_POLICY (
object_schema => 'scott',
object_name => 'orders_tab',
policy_name => 'orders_policy',
function_schema => 'sysadmin_vpd',
policy_function => 'get_user_orders',
statement_types => 'select');
END;
/
5) CREAR LA POLÍTICA PARA ASOCIAR A LA FUNCIÓN DE LA TABLA.