InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial PL/SQL
Introducción a PLSQL
Programación con PL/SQL
Fundamentos de PL/SQL
Tipos de datos en PL/SQL
Operadores en PL/SQL
Estructuras de control en PL/SQL
Bloques PL/SQL
Cursores en PL/SQL
Cursores Implicitos en PL/SQL
Cursores Explicitos en PL/SQL
Cursores de actualización en PL/SQL
Excepciones en PL/SQL
Excepciones personalizadas en PL/SQL
Propagacion de excepciones en PL/SQL
Subprogramas en PL/SQL
Procedimientos almacenados en PL/SQL
Funciones en PL/SQL
Triggers en PL/SQL
Subprogramas en bloques anónimos
Paquetes en PL/SQL
Registros PL/SQL
Tablas PL/SQL
Tipo VARRAY
BULK COLLECT
Transacciones con PL/SQL
Transacciones autónomas
SQL Dinamico
Funciones integradas de PL/SQL
Secuencias
PL/SQL y Java
También puedes ver ...
Excepciones personalizadas en PL/SQL
Como conectar a ORACLE con Java
Recuperar datos BLOB de ORACLE
Trabajar con datos de tipo BLOB en ORACLE
PL/SQL y Java
Secuencias
Transacciones autónomas
SQL Dinamico
Funciones integradas de PL/SQL
Transacciones con PL/SQL


Bloques PL/SQL

   Un programa de PL/SQL está compuesto por bloques. Un programa está compuesto como mínimo de un bloque.

   Los bloques de PL/SQL pueden ser de los siguientes tipos:

  • Bloques anónimos
  • Subprogramas

Estructura de un Bloque

    Los bloques PL/SQL presentan una estructura específica compuesta de tres partes bien diferenciadas:

  • La sección declarativa en donde se declaran todas las constantes y variables que se van a utilizar en la ejecución del bloque.
  • La sección de ejecución que incluye las instrucciones a ejecutar en el bloque PL/SQL.
  • La sección de excepciones en donde se definen los manejadores de errores que soportará el bloque PL/SQL.

   Cada una de las partes anteriores se delimita por una palabra reservada, de modo que un bloque PL/SQL se puede representar como sigue:

 
[ declare | is | as ]

/*Parte declarativa*/
begin
/*Parte de ejecucion*/
[ exception ]
/*Parte de excepciones*/
end;

  De las anteriores partes, únicamente la sección de ejecución es obligatoria, que quedaría delimitada entre las cláusulas BEGIN y END. Veamos un ejemplo de bloque PL/SQL muy genérico. Se trata de un bloque anónimos, es decir no lo identifica ningún nombre. Los bloques anónimos identifican su parte declarativa con la palabra reservada DECLARE.


DECLARE
/*Parte declarativa*/
	nombre_variable DATE;
BEGIN
/*Parte de ejecucion
* Este código asigna el valor de la columna "nombre_columna"
* a la variable identificada por "nombre_variable"
*/
	SELECT SYSDATE
INTO nombre_variable
FROM DUAL;
EXCEPTION
/*Parte de excepciones*/
WHEN OTHERS THEN
dbms_output.put_line('Se ha producido un error');
END;

   A continuación vamos a ver cada una de estas secciones

Sección de Declaración de Variables

   En esta parte se declaran las variables que va a necesitar nuestro programa. Una variable se declara asignandole un nombre o "identificador" seguido del tipo de valor que puede contener. También se declaran cursores, de gran utilidad para la consulta de datos, y excepciones definidas por el usuario. También podemos especificar si se trata de una constante, si puede contener valor nulo y asignar un valor inicial.

   La sintaxis generica para la declaracion de constantes y variables es:


nombre_variable [CONSTANT] <tipo_dato> [NOT NULL][:=valor_inicial]

   donde:

  • tipo_dato: es el tipo de dato que va a poder almacenar la variable, este puede ser cualquiera de los tipos soportandos por ORACLE, es decir NUMBER , DATE , CHAR , VARCHAR, VARCHAR2, BOOLEAN ... Además para algunos tipos de datos (NUMBER y VARCHAR) podemos especificar la longitud.
  • La cláusula CONSTANT indica la definición de una constante cuyo valor no puede ser modificado. Se debe incluir la inicialización de la constante en su declaración.
  • La cláusula NOT NULL impide que a una variable se le asigne el valor nulo, y por tanto debe inicializarse a un valor diferente de NULL.
  • Las variables que no son inicializadas toman el valor inicial NULL.
  • La inicialización puede incluir cualquier expresión legal de PL/SQL, que lógicamente debe corresponder con el tipo del identificador definido.
  • Los tipos escalares incluyen los definidos en SQL más los tipos VARCHAR y BOOLEAN. Este último puede tomar los valores TRUE, FALSE y NULL, y se suele utilizar para almacenar el resultado de alguna operación lógica. VARCHAR es un sinónimo de CHAR.
  • También es posible definir el tipo de una variable o constante, dependiendo del tipo de otro identificador, mediante la utilización de las cláusulas %TYPE y %ROWTYPE. Mediante la primera opción se define una variable o constante escalar, y con la segunda se define una variable fila, donde identificador puede ser otra variable fila o una tabla. Habitualmente se utiliza %TYPE para definir la variable del mismo tipo que tenga definido un campo en una tabla de la base de datos, mientras que %ROWTYPE se utiliza para declarar varibales utilizando cursores.

   Ejemplos:      

   Estructura de un bloque anónimo.

      
DECLARE
/* Se declara la variable de tipo VARCHAR2(15) identificada por v_location y se le asigna
el valor "Granada"*/

v_location VARCHAR2(15) := ’Granada’; 

/*Se declara la constante de tipo NUMBER identificada por PI y se le asigna
el valor 3.1416*/
PI CONSTANT NUMBER := 3.1416;

/*Se declara la variable del mismo tipo que tenga el campo nombre de la tabla tabla_empleados
identificada por v_nombre y no se le asigna ningún valor */
v_nombre tabla_empleados.nombre%TYPE;

/*Se declara la variable del tipo registro correspondiente a un supuesto cursor, llamado
micursor, identificada por reg_datos*/

reg_datos micursor%ROWTYPE;

BEGIN
/*Parte de ejecucion*/
EXCEPTION
/*Parte de excepciones*/
END;

   Estructura de un subprograma:

      
CREATE PROCEDURE simple_procedure IS
/* Se declara la variable de tipo VARCHAR2(15) identificada por v_location y se le asigna
el valor "Granada"*/

v_location VARCHAR2(15) := ’Granada’; 

/*Se declara la constante de tipo NUMBER identificada por PI y se le asigna
el valor 3.1416*/
PI CONSTANT NUMBER := 3.1416;

/*Se declara la variable del mismo tipo que tenga el campo nombre de la tabla tabla_empleados
identificada por v_nombre y no se le asigna ningún valor */
v_nombre tabla_empleados.nombre%TYPE;

/*Se declara la variable del tipo registro correspondiente a un supuesto cursor, llamado
micursor, identificada por reg_datos*/

reg_datos micursor%ROWTYPE;

BEGIN
/*Parte de ejecucion*/
EXCEPTION
/*Parte de excepciones*/
END;

 


Inicio | Tutorial PL/SQL Estructuras de control en PL/SQLTutorial PL/SQLCursores en PL/SQL Versión para imprimir Foros de consulta

 
cual es el usuario para conectarse a oracle 8i? por michel
Respuesta recibida el [27/08/2007 02:53:14]
hola como estas, instale el gestor de bd oracle 8i pero al intentar conectarme al pl/sql me pide un usuario y una pass que desconozco...

 
Has tenido que introducirla en... por Anónimo
Respuesta recibida el [27/08/2007 03:07:01]
Has tenido que introducirla en la instalación, pero ...
como es 8i prueba con "internal" y de clave "ORACLE".

 
Problemas con oracle xe y delphi por Alexandra
Respuesta recibida el [19/09/2007 03:27:10]
Estoy trabajando con oracle xe y zeos, al abrir un TZstoredProc con un procedimiento oracle que tiene un parametro de entrada y un sys_refcursor como salida, genera un error de parametro invalido....porfa si tienes una solucion para esto te lo agradecira muchiiiisimo.

 
Conociendo Oracle por Alondra
Respuesta recibida el [21/01/2008 07:06:16]
Un tutorial muy bueno, a pesar que no practico directamente la informatica me ha ayudado a entender mejor al personal que me complementa en el desarrollo de los diseños

 
chupa el perro por tu ano
Respuesta recibida el [21/04/2008 09:41:17]
que pasa longi ql y weas ta wena la wea de tutorial yeahhh power!!!!!!!!!

 
chancho culiao por oracle eeeeeeeeeeeee
Respuesta recibida el [21/04/2008 09:42:45]
debo decir en estricto rigor eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

xdddd!!!!!!!!!!!!!!

 
Problemas con Oracle por Eder
Respuesta recibida el [24/04/2008 01:01:33]
Tengo un problema al devolver algunas variables dentro de un procedimiento almacenado de oracle 8i me sale error; que no puedo devolver mas de una fila. Alguien me puede ayudar con esto.
Gracias

 
Login por Jose Balanzategui
Respuesta recibida el [06/05/2008 11:05:16]
Cuando instalas oracle te piede el usuario y password, esto es lo que tienes que escribir:
USUARIO: SCOTT
PASWORD: TIGER

 
Enhorabuena por PULSAY
Respuesta recibida el [02/10/2008 03:10:28]
Enhorabuena por el tutorial, he aprendido todo lo imprescindible del pl/sql en un día y he podido sacar adelante el trabajo que tenía entre manos.
Gracias.

 
ESTAS SON MAMADAS... por Anónimo
Respuesta recibida el [15/10/2008 07:38:56]
ESTAS SON MAMADAS

 
ESTAS SON PURAS MAMADAS... por EMANUEL MARTINEZ
Respuesta recibida el [15/10/2008 07:39:47]
ESTAS SON PURAS MAMADAS

 
ME ENCUERO POR UN PESO... por ELSA PATRICIA
Respuesta recibida el [15/10/2008 07:40:23]
ME ENCUERO POR UN PESO

 
Q CVR por HENRY
Respuesta recibida el [30/10/2008 02:10:21]
BRABAZO TIO Q CVR Q EXISTAN PATAS COMO TU

 
Contraseña PL/SQL por Softmarck
Respuesta recibida el [03/11/2008 09:31:11]
despues de instalar y cuando te pide el usuario y la contraseña son los mismos del oracle es decir(al menos en mi caso) usuario: system contraseña: system1, es usuario es el mismo la contraseña un poco que puede variar puede ser solo system o quizas sys y asi juega con eso jejeje espero q te ayude en algo suerte...

 
huelo a estiercol por agustin paredes
Respuesta recibida el [11/11/2008 07:38:37]
oigan amigos me apesta la cola a pura mierda ke pudo hacer
mi novia me corto y creo ke se debe a ese motivo.
gracias por leer esto les agradeceria mucho si dan un consejo

 
Para "huelo a estiercol" por xxx
Respuesta recibida el [18/12/2008 10:44:32]
El agua no es solo para tomertela o para lavar coches,tambien la puedes usar para bañarte, lavate la cola con agua limpia y jabon y se te quitara la pestilencia a kaka...

 
ayuda porfa por Soni
Respuesta recibida el [31/03/2009 05:10:00]
Quiero crear un bloque en el que se pida el nombre y la edad del usuario, se guarde en
variables y posteriormente se muestre por pantalla su contenido. Estoy practicando...

 
GRACIAS por Daniel
Respuesta recibida el [02/04/2009 07:36:04]
Gracias por subir este tutorial, es EXCELENTE!

 
necesito ayuda por Nada que ver con nada
Respuesta recibida el [04/05/2009 03:36:30]
Saludos. Como hago un procedure para transformar una lista de registros en una tabla de filas x columnas

 
consulta por ana
Respuesta recibida el [18/05/2009 06:51:52]
como realizar facilmente un ejercicio de bloques en pl/sql

 
consulta por ana
Respuesta recibida el [18/05/2009 06:51:53]
como realizar facilmente un ejercicio de bloques en pl/sql

 
? por ?YOP¿
Respuesta recibida el [10/06/2009 11:42:31]
UNA PREGUNTA PARA Q ES EL %TYPE ESPECIFICAMENTE NO COMPRENDO BIEN GRACIAS

 
ayuda con el pl/sql por jaime
Respuesta recibida el [09/12/2009 02:11:05]
como ejecutar este bloque PL/SQL
en el TOAD, pues en el SQLPLUS lo ejecuto con el set serveroutput on

SQL> declare
2 mensaje varchar2(30);
3 año constant number(4):=2004;
4 fecha date:=sysdate;
5 begin
6 mensaje:='Mi primer bloque PL/SQL';
7 dbms_output.put_line (mensaje ||año||'-
8 end;
9 /




 
RE: como ejecutar este bloque PL/SQL por josh_bassplayer
Respuesta recibida el [26/01/2010 04:47:48]
Con F5

Pero debes activar el DBMS Output, que se encuentra en la parte inferiror del toad (desktop panels)


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial PL/SQL Estructuras de control en PL/SQLTutorial PL/SQLCursores en PL/SQL Versión para imprimir

Bloques PL/SQL
Autor: Pedro Herrarte Sánchez
Visitas: 103991 Fecha de publicación: 04/03/2006
Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación.

Posee mas de diez años de experiencia trabajando para las principales empresas de España.

Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).

Es fundador, diseñador y programador de www.devjoker.com.




Visitas: 109 | Comentarios: 3 | Archivo: Articulos
02/02/2010 iPad vs Telesketch
Visitas: 809 | Comentarios: 2 | Archivo: Articulos
Categorias: Humor
Visitas: 764 | Comentarios: 3 | Archivo: Articulos
Visitas: 3177 | Comentarios: 2 | Archivo: Articulos
Categorias: C#
Visitas: 14562 | Comentarios: 7 | Archivo: Articulos
Categorias: C#|Seguridad
Visitas: 1497 | Comentarios: 3 | Archivo: Articulos
Visitas: 695 | Comentarios: 2 | Archivo: Articulos
Visitas: 369 | Comentarios: 0 | Archivo: Articulos
Visitas: 2034 | Comentarios: 2 | Archivo: Articulos
Categorias: C#

Útimos temas recibidos en los foros ...
certificado por jhon jairo vargas ... [Actualidad] 1 13/03/2010
devolver consulta en form builder de oracle con like por cesar10lb ... [ORACLE] 0 13/03/2010
certificado de cesantias horizonte por yeimmy ... [Actualidad] 4 13/03/2010
solicito certificado de pensiones y sesantias para laborar por maria eugenia garcia m. ... [Actualidad] 0 13/03/2010
certificado de fondos de pensiones horizonte por mona ... [Actualidad] 6 03/03/2010
certificado pensiones por nelly moreno ... [Actualidad] 0 13/03/2010
certificado de pensiones del bbva horizonte por danger ... [Actualidad] 125 12/01/2010
cerificado fondo horizonte de pensiones y cesantias por carlos fideligno torres herrera ... [Actualidad] 147 18/01/2010
certuficado de afiliacion a porvenir por ede ... [Actualidad] 6 05/02/2010
certificado pensiones horizonte por angela patricia rodriguez ... [Actualidad] 136 26/01/2010
Solicitud certificado de afiliaciones a pensiones y cesantias proteccion por hz ... [Actualidad] 59 10/02/2010
necesito certificado de afiliacíon a pensiones por jelo ... [Actualidad] 0 12/03/2010

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
06/07/2007 Select FOR XML    forma parte de...Tutorial de Transact SQL
11/09/2006 Trabajar con datos de tipo BLOB en ORACLE
18/10/2005 Enviar emails a través de un servidor SMTP autenticado con Java
03/06/2008 Formatear números en SQL Server
27/10/2007 Lista de compatibilidad de software con Windows Mobile 5.0
15/07/2007 Consultas agregadas    forma parte de...Tutorial de Transact SQL
19/08/2006 Virtualización. Maquinas Virtuales.
24/05/2007 Tipos de datos en Transact SQL    forma parte de...Tutorial de Transact SQL
31/03/2006 Fundamentos de PL/SQL    forma parte de...Tutorial PL/SQL
20/04/2006 ASP.NET 2.0

 

Encuesta
¿A que perfil te adaptas mejor?




[Ver] [Votar]