 |
|
 |
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 */
| |
| |
 |
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
|
|

|
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
|
Visitas:
794
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
749
|
Comentarios:
3
|
Archivo:
Articulos
|
Visitas:
654
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
3145
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
14504
|
Comentarios:
7
|
Archivo:
Articulos
|
Visitas:
1478
|
Comentarios:
3
|
Archivo:
Articulos
|
|
Visitas:
691
|
Comentarios:
2
|
Archivo:
Articulos
|
|
Visitas:
369
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
2013
|
Comentarios:
2
|
Archivo:
Articulos
|
|
|
 |
|
 |