¿Que es PL/Scope?
PL/Scope es una herramienta del compilador introducida en Oracle 11g que recopila datos sobre identificadores en el código fuente PL/SQL en tiempo de compilación de unidades de programa. La información recopilada queda disponible en vistas estáticas del diccionario de datos. Los datos recogidos incluyen información sobre tipos de identificadores, sus usos (declaración, definición, referencia, llamada, asignación) y la ubicación de cada uso en el código fuente de nuestros programas.¿Como se lo habilita?
El parámetro "PLSCOPE_SETTINGS" define el comportamiento de esta herramienta al momento de compilar código PL/SQL. Por defecto, su valor es "IDENTIFIERS:NONE".Una de las nuevas funcionalidades en Oracle 12.2 es la posibilidad de aceptar otras opciones aparte para indicar el tipo de identificador.
Sintaxis (en negrita las nuevas opciones de 12.2)
IDENTIFIERS : { ALL | NONE | PUBLIC | SQL | PLSQL }
STATEMENTS : { ALL | NONE }
Ejemplo
Para habilitar el uso de PL/Scope al momento de compilar, sólo es necesario modificar el parámetro "PLSCOPE_SETTINGS" y crear o modificar una unidad de programación almacenada en la base de datos (procedimiento, función o paquete)CREATE TABLE t_datos (ID NUMBER(10), Dato VARCHAR(100), Nada VARCHAR(100)); -- ALTER SESSION SET PLSCOPE_SETTINGS='IDENTIFIERS:ALL'; -- CREATE OR REPLACE PROCEDURE PRUEBA_PLSCOPE(p_numerico IN NUMBER) AS -- v_numero NUMBER; v_texto VARCHAR2(30000); -- BEGIN -- SELECT dummy INTO v_texto FROM dual; -- SELECT COUNT(*) + p_numerico INTO v_numero FROM dual; -- INSERT INTO t_datos (ID, Dato) VALUES (v_numero, v_texto); -- END; / DROP TABLE t_datos;
¿Cómo se utiliza la información generada por PL/Scope?
Una vez que compilamos una unidad de programación teniendo habilitado PL/Scope, es posible consultar la información generada utilizando las vista estáticas "ALL_IDENTIFIERS" y "ALL_STATEMENTS" ( o sus versiones user_* o dba_*).SELECT ai.usage_id, ai.usage, ai.type, ai.name, ai.line, ai.col FROM ALL_IDENTIFIERS ai WHERE ai.object_name = 'PRUEBA_PLSCOPE' ORDER BY ai.usage_id;
SELECT a_s.usage_id, a_s.type, a_s.line, a_s.col, a_s.text FROM ALL_STATEMENTS a_s WHERE a_s.object_name = 'PRUEBA_PLSCOPE' ORDER BY a_s.usage_id;
¿Que nuevos tipos de identificadores y sentencias soporta PL/Scope en Oracle 12.2?
Oracle 12c Release 2 incluye los siguientes nuevos tipo de identificadores, antes no tenidos en cuenta por PL/ScopeIdentificadores
- ALIAS
- COLUMN
- MATERIALIZED VIEW
- OPERATOR
- TABLE
Sentencias
- SELECT
- UPDATE
- INSERT
- DELETE
- MERGE
- EXECUTE IMMEDIATE
- SET TRANSACTION
- LOCK TABLE
- COMMIT
- SAVEPOINT
- ROLLBACK
- OPEN
- CLOSE
- FETCH
¿Dónde se almacena la información generada por PL/Scope?
La información que PL/Scope recopila al momento de compilar una unidad de programación, es almacenada en el tablespace SYSAUX.
SELECT SPACE_USAGE_KBYTES
FROM V$SYSAUX_OCCUPANTS
WHERE OCCUPANT_NAME='PL/SCOPE';
SPACE_USAGE_KBYTES ------------------ 1088
No hay comentarios.:
Publicar un comentario