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


Fundamentos de PL/SQL

Primeros pasos con PL/SQL

   Para programar en PL/SQL es necesario conocer sus fundamentos.

   Como introducción vamos a ver algunos elementos y conceptos básicos del lenguaje.

  • PL/SQL no es CASE-SENSITIVE, es decir, no diferencia mayúsculas de minúsculas como otros lenguajes de programación como C o Java. Sin embargo debemos recordar que ORACLE es CASE-SENSITIVE en la búsquedas de texto.
  • Una linea en PL/SQL contiene grupos de caracteres conocidos como UNIDADES LEXICAS, que pueden ser clasificadas como:
    • DELIMITADORES
    • IDENTIFICADORES
    • LITERALES
    • COMENTARIOS
    • EXPRESIONES
  • DELIMITADOR: Es un símbolo simple o compuesto que tiene una función especial en PL/SQL. Estos pueden ser:
    • Operadores Aritmeticos
    • Operadores Logicos
    • Operadores Relacionales
  • IDENTIFICADOR: Son empleados para nombrar objetos de programas en PL/SQL asi como a unidades dentro del mismo, estas unidades y objetos incluyen:
    • Constantes
    • Cursores
    • Variables
    • Subprogramas
    • Excepciones
    • Paquetes
  • LITERAL: Es un valor de tipo numérico, caracter, cadena o lógico no representado por un identificador (es un valor explícito).
  • COMENTARIO: Es una aclaración que el programador incluye en el código. Son soportados 2 estilos de comentarios, el de línea simple y de multilínea, para lo cual son empleados ciertos caracters especiales como son:


    -- Linea simple


    /*
    Conjunto de Lineas
    */


Inicio | Tutorial PL/SQL Programación con PL/SQLTutorial PL/SQLTipos de datos en PL/SQL Versión para imprimir Foros de consulta

 
Cadena de escape por Diego
Respuesta recibida el [09/11/2007 01:13:48]
¿Existe la cadena de escape en PL/SQL?. Gracias

 
ke pedo por moncho
Respuesta recibida el [12/02/2008 06:33:55]
no entiendo ni madres....

 
quepedos estas madres guey!... por tuty
Respuesta recibida el [04/03/2008 03:35:31]
quepedos estas madres guey!

 
Hasta aqui vamos bien xD por Adrian Lozano
Respuesta recibida el [18/03/2008 03:49:42]
jajjaja que risa los comentarios que ponen .. Parece buen curso ;) 

 
GRACIAS por JERU
Respuesta recibida el [29/03/2008 10:16:00]
ESTO ME PARECE UN BUEN TRABAJO , NO ES TAN DENSO..... MUCHAS GRACIAS AL AUTOR

 
Que pedo dijo Alfredo por Yohan
Respuesta recibida el [19/05/2008 04:40:23]
Como hago una clase java que me interprete una consulta a la base de datos por medio de lenguaje pl/sql

 
Yo se como hacer una clase! por Ni mergas!
Respuesta recibida el [12/08/2008 12:38:46]
Juntas a un puñado de weyes en un salon, y en el pizarron les pones codigo en java y despues les explicas

Esa es una clase de java jajaja

 
bueno por Rulita
Respuesta recibida el [22/09/2008 08:13:04]
gracias al tutor..

 
Como hago esto?? por Xabu
Respuesta recibida el [26/09/2008 11:56:39]
COMO LE HAGO PARA PODER CONTROLAR UN JET DE LA ARMADA AMERICANA DESDE UN CIBER-CAFE?? O PARA CONTROLAR UN OVNI O UN ROBOT TIPO MAZINGER Z??? PARA SUBIRME EN ELLOS Y VOLAR POR TODO EL MUNDO. :D  GRACIAS

 
como puedo ligar con paulina rubio ? por elpacoselacometoda
Respuesta recibida el [09/10/2008 01:40:54]
Me surge la duda de si las excepciones en pl/sql tienen algo que ver con que me pueda ligar a paulina Rubio. en su defecto, me pueden pasar el teléfono de  la becaria de clinton ¿?

 
La Clase de Java por Scard
Respuesta recibida el [16/10/2008 03:09:22]
mmm no entiendo para que quieres hacer una clase de java supongo que basta tener el conector correcto y generar el script en un String y pasarlo a la consulta, al menos asi llegue a generar unas consultas, revisa la documentacion de SUN a ver que te puede indicar creo que lo resuelves con el conector correcto y por lo general pasando la query o el script por un buffer

 
funcion poner miles i decimales en numero grande por sergi
Respuesta recibida el [22/03/2009 04:29:30]
alguen sabe alguna funcion  o truco para poder passar de un salario 2262000 a  un salario 2.262.000,00  
xo con la dificultad de tener un record con el salario en el 1er formato i tengo que mostrar el salario con es 2no formato

 
Oracle por Zurdo
Respuesta recibida el [24/03/2009 12:33:44]
Por eso es una o sino el mejor manejador de Base de Datos por su versatilidad y opciones que brinda al programador.

 
cursores por felipe
Respuesta recibida el [10/07/2009 01:00:18]
DECLARE 
CURSOR cpaises
IS
SELECT CO_PAIS, DESCRIPCION, CONTINENTE
FROM PAISES;
co_pais VARCHAR2 (3);
descripcion VARCHAR2 (50);
continente VARCHAR2 (25);
BEGIN
OPEN cpaises;
FETCH cpaises INTO co_pais,descripcion,continente;
CLOSE cpaises;
END;
DECLARE
CURSOR cpaises
IS
SELECT CO_PAIS, DESCRIPCION, CONTINENTE
FROM PAISES;
registro cpaises%ROWTYPE;
BEGIN
OPEN cpaises;
FETCH cpaises INTO registro;
CLOSE cpaises;
END;

DECLARE
CURSOR cpaises (p_continente VARCHAR2)
IS
SELECT CO_PAIS, DESCRIPCION, CONTINENTE
FROM PAISES
WHERE CONTINENTE = p_continente;
registro cpaises%ROWTYPE;
BEGIN
OPEN cpaises ('EUROPA');
FETCH cpaises INTO registro;
CLOSE cpaises;
END;

 
cursores2 por felipe
Respuesta recibida el [10/07/2009 01:03:04]
DECLARE 
CURSOR cpaises
IS
SELECT CO_PAIS, DESCRIPCION, CONTINENTE
FROM PAISES;
co_pais VARCHAR2 (3);
descripcion VARCHAR2 (50);
continente VARCHAR2 (25);
BEGIN
OPEN cpaises;
LOOP
FETCH cpaises INTO co_pais,descripcion,continente;
EXIT WHEN cpaises%NOTFOUND;
dbms_output.put_line(descripcion);
END LOOP;
CLOSE cpaises;
END;

DECLARE
CURSOR cpaises
IS
SELECT CO_PAIS, DESCRIPCION, CONTINENTE
FROM PAISES;
co_pais VARCHAR2 (3);
descripcion VARCHAR2 (50);
continente VARCHAR2 (25);
BEGIN
OPEN cpaises;
FETCH cpaises INTO co_pais, descripcion, continente;
WHILE cpaises%found
LOOP
dbms_output.put_line (descripcion);
FETCH cpaises INTO co_pais, descripcion, continente;
END LOOP;
CLOSE cpaises;
END;

DECLARE
CURSOR cpaises
IS
SELECT CO_PAIS, DESCRIPCION, CONTINENTE
FROM PAISES;
registro cpaises%ROWTYPE;
BEGIN
FOR registro IN cpaises
LOOP
dbms_output.put_line(registro.descripcion);
END LOOP;
END;

DECLARE
CURSOR cpaises IS
select CO_PAIS, DESCRIPCION, CONTINENTE
from paises
FOR UPDATE;
co_pais VARCHAR2 (3);
descripcion VARCHAR2 (50);
continente VARCHAR2 (25);
BEGIN
OPEN cpaises;
FETCH cpaises INTO co_pais, descripcion, continente;
WHILE cpaises%found
LOOP
UPDATE PAISES
SET CONTINENTE = CONTINENTE || '.'
WHERE CURRENT OF cpaises;
FETCH cpaises INTO co_pais, descripcion, continente;
END LOOP;
CLOSE cpaises;
COMMIT;
END;

 
exepciones por felipe
Respuesta recibida el [10/07/2009 01:04:28]
DECLARE
-- Declaramos una excepción identificada por VALOR_NEGATIVO
VALOR_NEGATIVO EXCEPTION;
valor NUMBER;
BEGIN
-- Ejecución
valor:= -1;
IF valor < 0 THEN
RAISE VALOR_NEGATIVO;
END IF;
EXCEPTION
-- Excepción
WHEN VALOR_NEGATIVO THEN
dbms_output.put_line ('El valor no puede ser negativo');
END;


DECLARE
v_div NUMBER;
BEGIN
SELECT 1/0 INTO v_div FROM DUAL;
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20001,'No se puede dividir por cero');
END;

 
PROCEDIMIENTOS ALMACENADO por felipe
Respuesta recibida el [10/07/2009 01:05:25]
CREATE OR REPLACE 
PROCEDURE Actualiza_Saldo(cuenta NUMBER,
new_saldo NUMBER DEFAULT 10 )
IS
-- Declaracion de variables locales
BEGIN
-- Sentencias
UPDATE SALDOS_CUENTAS
SET SALDO = new_saldo,
FX_ACTUALIZACION = SYSDATE
WHERE CO_CUENTA = cuenta;

END Actualiza_Saldo;
Existen dos formas de pasar argumentos a un procedimiento almacenado a la hora de ejecutarlo (en realidad es válido para cualquier subprograma). Estas son:
Notación posicional: Se pasan los valores de los parámetros en el mismo orden en que el procederé los define.

BEGIN
Actualiza_Saldo(200501,2500);
COMMIT;
END;
Notación nominal:Se pasan los valores en cualquier orden nombrando explícitamente el parámetro.
BEGIN
Actualiza_Saldo(cuenta => 200501,new_saldo => 2500);
COMMIT;
END;

 
FUNCIONES por felipe
Respuesta recibida el [10/07/2009 01:06:11]
CREATE OR REPLACE
FUNCTION fn_Obtener_Precio(p_producto VARCHAR2)
RETURN NUMBER
IS
result NUMBER;
BEGIN
SELECT PRECIO INTO result
FROM PRECIOS_PRODUCTOS
WHERE CO_PRODUCTO = p_producto;
return(result);
EXCEPTION
WHEN NO_DATA_FOUND THEN
return 0;
END ;
Una vez creada y compilada la función podemos ejecutarla de la siguiente forma:
DECLARE
Valor NUMBER;
BEGIN
Valor := fn_Obtener_Precio('000100');
END;
Las funciones pueden utilizarse en sentencias SQL de manipulación de datos (SELECT, UPDATE, INSERT y DELETE):
SELECT CO_PRODUCTO,
DESCRIPCION,
fn_Obtener_Precio(CO_PRODUCTO)
FROM PRODUCTOS;

 
TRIGGERS por felipe
Respuesta recibida el [10/07/2009 01:06:58]
Create  or remplace trigger valida_dep
After insert or update
On departments
For each row
Begin
If (new.department_id=500)then
Raise_aplication_error(-2001,’el depo_id no pude ser 500’)
End if;
En valida_dep

CREATE TRIGGER tr1_empleados
BEFORE INSERT OR UPDATE OF salario
ON empleados
FOR EACH ROW
WHEN (:new.salario > 5000);
BEGIN
UPDATE empleados
SET salario = 5000
WHERE empleado_id = :new.empleado_id;
END;

 
CREACION DE UNA TABLA por felipe
Respuesta recibida el [10/07/2009 01:08:24]
CREATE TABLE AUDITORIA
( Nombre VARCHAR2(60),
usuario VARCHAR2(60),
fecha DATE,
operacion VARCHAR2(60),
observacion VARCHAR2(60));

-------------------------------------
ALTER TABLE AUDITORIA ADD CONSTRAINT PK_auditoria
PRIMARY KEY (Nombre, usuario, fecha);
----------------------------------
ALTER TABLE employees
ADD (agrego_salario number);


 
cuanto voy a ganar cuando aprenda esto por dco
Respuesta recibida el [13/08/2009 02:38:44]
que pedos este felipe si sabes bastante, yo quiero saber cuanto puedo perdir en una entrevista de trabajo cuando sepa bien plsql..... thx 

 
Genial por sjaboss
Respuesta recibida el [11/12/2009 10:50:01]
Flaco esta pagina esta re buena gracias a ustedes me acabo de zafar de quilombo monstruoso Gracias


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

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial PL/SQL Programación con PL/SQLTutorial PL/SQLTipos de datos en PL/SQL Versión para imprimir

Fundamentos de PL/SQL
Autor: Pedro Herrarte Sánchez
Visitas: 97198 Fecha de publicación: 31/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: 90 | Comentarios: 2 | Archivo: Articulos
02/02/2010 iPad vs Telesketch
Visitas: 794 | Comentarios: 2 | Archivo: Articulos
Categorias: Humor
Visitas: 749 | Comentarios: 3 | Archivo: Articulos
Visitas: 3145 | Comentarios: 2 | Archivo: Articulos
Categorias: C#
Visitas: 14504 | Comentarios: 7 | Archivo: Articulos
Categorias: C#|Seguridad
Visitas: 1478 | Comentarios: 3 | Archivo: Articulos
Visitas: 691 | Comentarios: 2 | Archivo: Articulos
Visitas: 369 | Comentarios: 0 | Archivo: Articulos
Visitas: 2013 | Comentarios: 2 | Archivo: Articulos
Categorias: C#

Útimos temas recibidos en los foros ...
certificado de pensiones del bbva horizonte por danger ... [Actualidad] 123 12/01/2010
certificado de pensiones horizonte por ruby ... [Actualidad] 32 14/02/2010
jalar datos a un listbox por happypeace31 ... [Visual Basic .NET] 1 21/09/2009
fecha valida datetimepicker por jess ... [Visual Basic .NET] 1 04/03/2010
Mi numero de autogenerado por chari ... [Visual Basic .NET] 4 01/03/2010
quiero saber en que entidad estoy afiliada a cesantias y pensiones por adriana ... [WIN 98/NT/2000/XP] 23 28/11/2009
Certificado de afiliacion Pensiones y Cesantias por VIVIANA ... [Actualidad] 1 10/03/2010
CERTIFICADO por LIZETH ... [Actualidad] 0 11/03/2010
certificado de afiliación de pensiones y cesantias por secre ... [Actualidad] 111 28/01/2010
Solicitud certificado de afiliaciones a pensiones y cesantias proteccion por hz ... [Actualidad] 54 10/02/2010
certificado pensiones horizonte por angela patricia rodriguez ... [Actualidad] 135 26/01/2010
pensiones por eduard ... [Visual Basic 6.0] 0 11/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 ...
11/10/2006 Métodos    forma parte de...Tutorial C#
05/08/2007 Como ver peliculas descargadas en Windows Vista
16/08/2007 Operaciones con conjuntos.    forma parte de...Tutorial de Transact SQL
01/08/2007 Actualizar datos en Transact SQL    forma parte de...Tutorial de Transact SQL
01/04/2006 Estructuras de control en PL/SQL    forma parte de...Tutorial PL/SQL
15/07/2008 WCF: netTcpBinding con seguridad tipo Custom
31/03/2006 Fundamentos de PL/SQL    forma parte de...Tutorial PL/SQL
02/12/2006 Pseudoatributos    forma parte de...Tutorial C#
22/10/2005 Consultar datos. SELECT    forma parte de...Tutorial SQL
12/06/2007 Estructuras de control en Transact SQL    forma parte de...Tutorial de Transact SQL

 

Encuesta
¿A que perfil te adaptas mejor?




[Ver] [Votar]