Pasos para implementar una vpd
-
Upload
sofia-salazar -
Category
Technology
-
view
88 -
download
2
Transcript of Pasos para implementar una vpd
![Page 1: Pasos para implementar una vpd](https://reader036.fdocuments.net/reader036/viewer/2022071704/55c80fb2bb61ebc51c8b45cf/html5/thumbnails/1.jpg)
PASOS PARA IMPLEMENTAR UNA VPD
![Page 2: Pasos para implementar una vpd](https://reader036.fdocuments.net/reader036/viewer/2022071704/55c80fb2bb61ebc51c8b45cf/html5/thumbnails/2.jpg)
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.
![Page 3: Pasos para implementar una vpd](https://reader036.fdocuments.net/reader036/viewer/2022071704/55c80fb2bb61ebc51c8b45cf/html5/thumbnails/3.jpg)
CREATE OR REPLACE CONTEXT orders_ctx USING orders_cxt_pkg;
2) CREAR UN CONTEXTO DE LA
APLICACIÓN.
![Page 4: Pasos para implementar una vpd](https://reader036.fdocuments.net/reader036/viewer/2022071704/55c80fb2bb61ebc51c8b45cf/html5/thumbnails/4.jpg)
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
![Page 5: Pasos para implementar una vpd](https://reader036.fdocuments.net/reader036/viewer/2022071704/55c80fb2bb61ebc51c8b45cf/html5/thumbnails/5.jpg)
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.
![Page 6: Pasos para implementar una vpd](https://reader036.fdocuments.net/reader036/viewer/2022071704/55c80fb2bb61ebc51c8b45cf/html5/thumbnails/6.jpg)
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.