codwelt

Como crear un bloque de programa en oracle pl sql

Un bloque de pl sql es un programa o sección de codigo capaz de ejecutar sentencias DML preestablecidas dentro de la sección begin ...

por Sergio David Wiesner Maciashace 1 año

Como crear un bloque de programa en oracle pl sql

Un bloque de pl/sql es un programa o sección de codigo capaz de ejecutar sentencias DML preestablecidas dentro de la sección begin, estos subprogramas son utilizados de varias formas pero en una muy conocida es  atravez de un trigger.

Un bloque de oracle basico lo estructura 4 palabras que son:

  • DECLARE - Es donde se declara las variables que se van a utilizar en la sección BEGIN.
  • BEGIN  - Es la sección donde se escribe ejecuta la logica del programa.
  • EXEPTION - Acá se atrapa los errores que se producen dentro de la sección BEGIN.
  • END; - Con esta palabra se indica que el programa ha terminado.
  • / - Se indica en la consola que se ejecute el bloque.

Pero en realidad solo una palabra es obligatoria para que se pueda ejecutar que es la palabra BEGIN, las demas pueden ser opcionales y utilizadas segun las circunstancias. Ademas los bloques se dividen en diferentes tipos como lo son :

  • Anónimos
  • Con nombre
  • Subprogramas
  • Disparadores

La arquitectura se escribe como lo siguiente:

SET SERVEROUTPUT ON;

DECLARE
/*Esta sección se declaran las variables que se ejecutaran en la sección BEGIN*/
  A VARCHAR2(10) := 'Hola mundo';
BEGIN
/*Esta ejecuta las instrucciónes que se necesiten siempre y cuando sean de tipo DML*/
   DBMS_OUTPUT.PUT_LINE(A);
EXCEPTION
/*Si ocurre un error en la ejecución, construiremos una acción para  notificarlo*/
  WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error');
END;

NOTA: si queremos mostrar algo en pantalla debemos utilizar el paquete DBMS_OUTPUT  este paquete se utiliza para mostrar mensajes al usuarios se utiliza con el metodo DBMS_OUTPUT.PUT_LINE(A);  y mandamos el mensaje como parametro.

IMPORTANTE: Para que funcione la escritura en la pantalla se tiene que habiliar esta opción colocando SET SERVEROUTPUT ON; esta instrucción se tiene que colocar al inicio del bloque como aparece en el ejemplo.

¿Como utilizar las variables en la sección BEGIN?

Esto se puede hacer siempre y cuando las variables sean declaradas en la sección DECLARE , pero esto tiene un orden para igual al siguiente:

"Nombre variable" CONSTANT(Valor no pueda ser cambiado) "Tipo de dato mas longitud" NOT NULL(La variable debe ser inisializada de inmediato) := "Valor de la variable";

Ejemplo:

DECLARE
NomVar varchar2(38) NOT NULL := 'Sergio';
AppVar CONSTANT varchar2(38) := 'Wiesner';
AgeVar numeric(3) := 22;
CiuVar varchar2(30);
BEGIN
....
....
CiuVar := 'Bogota D.C.';
....
....
END;

 

Las variables se pueden utilizar en la sección BEGIN por medio de la palabra INTO y se utilizan con la instrucción SELECT  

DECLARE
NombreEmp varchar2(40);
BEGIN
select name into NombreEmp from users where id = 20;
END 

 

Ejemplo avanzado para la utilización de procedimientos

 En este ejercicio utilizaremos el usuario HR de oracle para hacer la prueba con la tabla employees, lo que haremos es actualizar el primer nombre de todos los empleados al nombre felipe. 

Crearemos un procedimiento para actualizar el nombre y despues haremos un rollback para que todo pase a la normalidad.
 

select first_name from employees where rownum < 10;

FIRST_NAME                                                                      
--------------------                                                            
Ellen                                                                           
Sundar                                                                          
Mozhe                                                                           
David                                                                           
Hermann                                                                         
Shelli                                                                          
Amit                                                                            
Elizabeth                                                                       
Sarah                                                                                      

10 rows selected.

SQL> create or replace procedure nombre_cambio(nomca in varchar2) is
  2  begin
  3  update employees set first_name = nomca;
  4  end nombre_cambio;
  5  /
Procedure created.

Despues lo llamamos mandando el nombre al que queremos actualizar

SQL> begin
  2  nombre_cambio('felipe');
  3  end;
  4  /

PL/SQL procedure successfully completed.

Ejecutamos un select para ver la actualización

select first_name from employees where rownum < 10;

FIRST_NAME                                                                      
--------------------                                                            
felipe                                                                          
felipe                                                                          
felipe                                                                          
felipe                                                                          
felipe                                                                          
felipe                                                                          
felipe                                                                          
felipe                                                                          
felipe                                                                          
felipe                                                                                                                               

10 rows selected.

Y ya despues de haber visto que funciono, haremos un rollback para dejar todo como estaba

SQL> rollback;

FIRST_NAME                                                                      
--------------------                                                            
Ellen                                                                           
Sundar                                                                          
Mozhe                                                                           
David                                                                           
Hermann                                                                         
Shelli                                                                          
Amit                                                                            
Elizabeth                                                                       
Sarah                                                                                      

10 rows selected.

 

https://www.oracle.com/technetwork/es/articles/sql/construyendo-con-bloques-parte-1-1549135-esa.html

 


 

comentarios:

Hashtags


pl oracle sql

Nuestro Timeline



Fuentes


  • PL SQL Disparadores o Triggers , Alejandro Alcalde, Consulta: 2018-08-27, Publicacion: 2017
    https://elbauldelprogramador.com/plsql-disparadores-o-triggers/