pasos para implementar una vpd

6
PASOS PARA IMPLEMENTAR UNA VPD

Upload: sofia-salazar

Post on 10-Aug-2015

88 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Pasos para implementar una vpd

PASOS PARA IMPLEMENTAR UNA VPD

Page 2: 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.

Page 3: Pasos para implementar una vpd

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

    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

    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

    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.