Saltar al contenido
Codifíca.me | Desarrollo web | Programación

PAQUETE DBMS_SQL. Oracle 10g I

28 junio, 2011

El paquete DBMS_SQL sirve para ejecutar sentencias dinámicas o para ejecutar sentencias que crean sentencias DDL.
SQL Dinámico: Son sentencias que no están previamente escritas en el programa y que son creadas en tiempo de ejecución.
Con este paquete podemos ejecutar cualquier tipo de sentencia (DQL, DML, DDL, et…).

Ventajas de usar este paquete:
• Ejecutar sentencias SQL, en especial DDL ( que no se pueden hacer en un procedimiento normal )
• Crear y ejecutar una select en tiempo real
• Ejecutar programas PL/SQl almacenados en tablas.

Para poder ejecutar este paquete, debemos disponer del privilegio EXECUTE to PUBLIC.
Recomendación: Quitar el permiso de ejecución sobre el usuario que no corresponda:

REVOKE EXECUTE ON DBMS_SQL from usuario1, usuarios…,

Para que sea el esquema que ejecuta programa el que tenga los privilegios para ejecutarlo.

CREATE OR REPLACE PROCEDURE …. AUTHID CURRENT-USER … IS

TIPOS DE SENTENCIAS

1. Primer Método

– Sentencias NO SELECT
– Sentencias DML. Con o sin variables.
– Sentencias DDL
– Se ejecutan directamente con EXECUTE IMMEDIATE

Se ejecutan sentencias DDL, DML ” casi ” fijas en tiempo de ejecución.

EXECUTE IMMEDIATE ‘Orden’;
EXECUTE IMMEDIATE ‘Create tabl T1 (column1 Number)’;

2. Según Método:

– Sentencias SELECT con un número de columnas fijas o variables.
– Se ejecutan mediante VARIABLES_VALUES

Se utiliza para ejecutar cualquier sentencia SQL.
Consume bastante memoria y mucos cursores por su característica de universalidad
Es compleja y podemos confundirnos fácilmente.
Debemos ejecutar una serie de fases para su correcto uso.

PASOS O FASE DEL METODO DOS:

1. Introduce la orden SQL o PL/SQL en una cadena de caracteres.
2. Abrir cursor.
3. Analizar la cadena para su correcta Sintaxis (PARSE)
4. Acoplar las variables de entrada
5. Si la orden es SELECT ir al paso 6. Si no es SELECT –> Ejecución
6. Definición de variables de salida.
7. Ejecución de consulta y extracción de resultados.