Este documento describe los conceptos básicos de PL/SQL, incluyendo las secciones de un bloque PL/SQL (DECLARE, BEGIN, EXCEPTION, END), la declaración y uso de variables, y los diferentes tipos de bloques y funciones. También explica conceptos como el manejo de excepciones, el uso de variables escalares y compuestas, y las funciones básicas de SQL que se pueden usar en PL/SQL.
Postgres expert, Bruce Momjian, as he discusses common table expressions (CTEs) and the ability to allow queries to be more imperative, allowing looping and processing hierarchical structures that are normally associated only with imperative languages.
Postgres expert, Bruce Momjian, as he discusses common table expressions (CTEs) and the ability to allow queries to be more imperative, allowing looping and processing hierarchical structures that are normally associated only with imperative languages.
PACKAGES, Package Specification and Scope, Create Package Syntax, Declaring Procedures and Functions within a Package, Package Body, Create Package Body Syntax,Example –Package, Example– Package Body, Example – Calling Package Procedure, mResults of Calling Package Procedure, Cursors in Packages , cursor Example – Package Body, Example – Use Cursor Variable
Objetivo: Capacitar al estudiante para que decida donde y qué tipo de índices deben ser creados para mejorar el rendimiento de las consultas en la base de datos.
Triggers are those little bits of code running in your database that gets executed when something happens that you care about. Whether you are a developer who puts all of your business logic inside of PL/pgSQL functions or someone who uses an ORM and wants to stay away from database code, you will likely end up using triggers at some point. The fact that the most recommend way of implementing table partitioning in PostgreSQL uses triggers accounts for the importance of understanding triggers.
In this talk, we will step through examples of writing various types of triggers using practical uses cases like partitioning and auditing.
The structure of a trigger
BEFORE vs AFTER triggers
Statement Level vs Row Level triggers
Conditional triggers
Event triggers
Debugging triggers
Performance overhead of triggers
All of the examples will be done using PL/pgSQL so in addition to getting an overview of triggers, you will also get a good understanding of how to code in PL/pgSQL.
PACKAGES, Package Specification and Scope, Create Package Syntax, Declaring Procedures and Functions within a Package, Package Body, Create Package Body Syntax,Example –Package, Example– Package Body, Example – Calling Package Procedure, mResults of Calling Package Procedure, Cursors in Packages , cursor Example – Package Body, Example – Use Cursor Variable
Objetivo: Capacitar al estudiante para que decida donde y qué tipo de índices deben ser creados para mejorar el rendimiento de las consultas en la base de datos.
Triggers are those little bits of code running in your database that gets executed when something happens that you care about. Whether you are a developer who puts all of your business logic inside of PL/pgSQL functions or someone who uses an ORM and wants to stay away from database code, you will likely end up using triggers at some point. The fact that the most recommend way of implementing table partitioning in PostgreSQL uses triggers accounts for the importance of understanding triggers.
In this talk, we will step through examples of writing various types of triggers using practical uses cases like partitioning and auditing.
The structure of a trigger
BEFORE vs AFTER triggers
Statement Level vs Row Level triggers
Conditional triggers
Event triggers
Debugging triggers
Performance overhead of triggers
All of the examples will be done using PL/pgSQL so in addition to getting an overview of triggers, you will also get a good understanding of how to code in PL/pgSQL.
Sesion06b - Introducción al PL-SQL (Oracle)José Toro
Este minitutorial tiene como objetivo captar todos los conceptos dictados en cada sesión en el curso de Base de Datos Avanzado II, así como brindar apoyo a los alumnos de la carrera técnica de Computación e Informática, que por algún motivo no hayan asistido a clases.
UNIDAD 4. Programación en Oracle
Logro de la Unidad de Aprendizaje
Al término de la unidad, el alumno construye programas estructurados utilizando el lenguaje PL/SQL dentro del manejador de base de datos Oracle. Incorpora cursores para procesar grandes volúmenes de información y gestiona los posibles errores de ejecución con el uso de excepciones.
Temario
4.1 Tema 6: PROGRAMACIÓN PL/SQL
4.1.1 Introducción a Oracle PL/SQL
4.1.2 Tipos de datos en PL/SQL
4.1.3 Estructuras de Bloques de PL/SQL
4.1.4 Sentencias SQL en PL/SQL
también es conocido por sus abreviatura como T-SQL, como definición es una extensión del SQL Microsoft junto son Sybase. Lo que conocemos a SQL como el lenguaje de búsqueda estructurado lo que viene hacer T-SQL es expander los estándares de SQL no incluyendo programación procedural, como algunas otras funciones para matemáticas, fechas, etc.
también es conocido por sus abreviatura como T-SQL, como definición es una extensión del SQL Microsoft junto son Sybase. Lo que conocemos a SQL como el lenguaje de búsqueda estructurado lo que viene hacer T-SQL es expander los estándares de SQL no incluyendo programación procedural, como algunas otras funciones para matemáticas, fechas, etc.
Un objeto Statement se usa para enviar sentencias SQL a la base de datos y obtener los resultados. Actualmente hay tres tipos de objetos Statement, todos los cuales actúan como contenedores para la ejecución de sentencias en una conexión dada
10. Tipos de bloque PL/SQL es un programa que tiene uno o más bloques. Estos bloques pueden estar separados o anidados unos con otros. Por lo tanto, un bloque puede representar una pequeña parte de otro bloque. [DECLARE] BEGIN [ EXCEPTION ] END; -- statements Anónimo DECLARE name BEGIN [EXCEPTION] END; IS --statements Procedimiento FUNTION name BEGIN [EXCEPTION] END; RETURN datatype --statements IS RETURN value; Función
14. La siguiente tabla contiene una idea general de los conceptos de programa de PL/SQL que usa un bloque básico.
15.
16.
17.
18.
19.
20.
21.
22.
23. Declaración de Variables PL/SQL Sintaxis: Identifier: es el nombre de la variable CONSTANT: restringe la variable con el propósito de que su valor no pueda cambiar; las constantes deben ser inicializadas.
24. Data type: puede ser un escalar, compuesto, referenciado o LOB. NOT NULL: restringe a la variable para que tenga un valor . Expr: es cualquier expresión PL/SQL que puede ser una expresión literal, otra variable o una expresión que involucra operadores y funciones.
25. Inicialización de variables y palabras claves Identifier: es el nombre de la variable escalar Expr: puede ser una variable, literal o llamada a una función, pero no a una columna de la base de datos. Las variables son inicializadas todo el tiempo en un bloque o subprograma. Por defecto las variables son inicializadas con NULL. Default: se puede usar la palabra clave de default en lugar del operador de asignación. NOT NULL: imponer la estricción NOT NULL cuando la variable debe contener un valor.
30. Declaración de Variables Booleanas Este tipo de variables nos permiten realizar comparaciones a través de expresiones booleanas, estas pueden ser simples o complejas separadas por operadores relacionales. Ejemplo: v_sal1 := 50000; v_sal2 := 60000; La siguiente expresión es verdadera v_sal1 < v_sal2
31. Declaración y inicialización de una variable booleana DECLARE v_flag BOOLEAN:= FALSE; BEGIN v_flag := TRUE; END; DBMS_OUTPUT.PUT_LINE Se puede declarar una variable principal o anfitriona, referenciarla en un bloque PL/SQL, y luego presentar su contenido en iSQL*Plus usando el comando PRINT. Otra alternativa para presentar que la información de un bloque de PL/SQL es DBMS_OUTPUT.PUT_LINE es un paquete oracle-supplied, y PUT_LINE es un procedimiento dentro de ese paquete.
32. Dentro de un bloque PL/SQL, referencia DBMS_OUTPUT.PUT_LINE y entre paréntesis se especifica lo que se quiere que presente. El paquete debe estar primero permitido en una sesión en iSQL*Plus. Para ejecutar el paquete en iSQL*Plus se debe realizar con el comando SERVEROUTPUT ON. Ejemplo:
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50. Símbolos compuestos Nota.- No puede usarse palabras reservadas como los identificadores a menos que ellos son adjuntos en la cita doble.
107. Ciclos Básicos Ciclos Básicos La mas simple forma de las sentencias LOOP es la básica, la cual encierra una secuencia de sentencias entre las palabras reservadas LOOP y END LOOP. Un ciclo básico permite la ejecución de al menos una sentencia como mínimo. LA sentencia EXIT Usted puede usar EXIT para terminar el ciclo. LOOP -- delimitado statement1; -- sentencias … EXIT [WHEN condition] -- Termina sentencia END LOOP; -- delimitador Condicion: Es una variable booleana o expresión (TRUE, FALSE, o NULL)
124. Estructura de registros PL/SQL Field 1 (data type) Field2(data type) Field3 (data type) Ejemplo: Field 1 (data type) Field2(data type) Field3 (data type) Employee_id number(6) last_name varchar2(25) job_id varchar2(10) 100 King AD_PRES
125.
126.
127.
128.
129.
130.
131. Índice por estructura de la tabla Identificador Único Columna Binary_Integer Scalar … 1 2 3 … … Jones Smith Maduro …
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170. La clausula WHERE CURRENT OF DECLARE CURSOR sal_cursor IS SELECT e.department_id, employee_id, last_name, salary FROM employees e, departments d WHERE d.department.id c = e. department_id AND d.department id ca =60 FOR UPDATE OF salary NOWAIT; BEGIN FOR emp_record in sal_cursor LOOP if emprecord.salary <5000 THEN UPDATE employees SET salary = emp_record.salary * 1.10 WHERE CURRENT OF sal_cursor; AND IF END LOOP; END
187. Funciones para atrapar excepciones DECLARE v_error_code NUMBER; v_error_message VARCHAR2(255); BEGIN … EXCEPTION … WHEN OTHERS THEN ROLLBACK; v_error_code := SQLCODE; v_error_mesage := SQLERRM; INSERT INTO errors VALUES (v_error_code , v_error_message); END;
188. Atrapando excepciones User-defined Sección ejecutable Sección de declaración Seccion Exception-handling Declare Raise reference Nombre de la excepción Levantar explícitamente La excepción usando la Sentencia RAISE Manipular la excepción De levantamiento
189. Excepciones user-defined DEFINE p_departmente_desc = ‘Information tecnologhy’ DEFINE p_departmente_number= 300 DECLARE e_invalid_department EXCEPTION; BEGIN UPDATE departments; SET department_name = ‘&p_department_desc’ WHERE department_id = &p_department_number; IF SQL%NOTFOUND THEN RAISE e_invalid_department; END IF; COMMIT; EXCEPTIO WHEN e_invalid_department THEN DBMS_OUTPUT.PUT_LINE (‘no such department id’); END;
190. Llamando entornos iSQL *Plus Despliega el numero de error y mensaje a la pantalla Constructor de procedimiento Despliega el numero de error y mensaje a la pantalla Formas del desarrollador de Oracle Accesa al numero de error y mensaje en un trigger Aplicación Precompilada Accesa al numero de error a traves de la estructura de datos SQLCA Un Bloque PL/SQL incluído Atrapa excepciones en routinas de exeption-handling del bloque incluído
191. Propagando excepciones DECLARE e_no_rows EXCEPTION; e_integrity EXCEPTION; PRAGMA EXCEPTION_INIT (e_integrity, -2292) BEGIN FOR c_record IN emp_cursor LOOP BEGIN SELECT … UPDATE … IF SQL%NOTFOUND THEN RAISE e_no_rows; END IF; END; END LOOP; EXCEPTION WHEN e_integrity THEN … WHEN e_no_rows THEN … END;