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


Triggers

Declaración de triggers

    Un trigger es un bloque PL/SQL asociado a una tabla, que se ejecuta como consecuencia de una determinada instrucción  SQL (una operación DML: INSERT, UPDATE o DELETE) sobre dicha tabla.

    La sintaxis para crear un trigger es la siguiente:


CREATE [OR REPLACE] TRIGGER <nombre_trigger>
{BEFORE|AFTER}
{DELETE|INSERT|UPDATE [OF
col1, col2, ..., colN]
[
OR {DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]...]}
ON
<nombre_tabla>
[FOR EACH ROW [WHEN (<condicion>)]]

DECLARE
  -- variables locales
BEGIN
  -- Sentencias
[EXCEPTION]
  -- Sentencias control de excepcion
 
END <nombre_trigger>;

    El uso de OR REPLACE permite sobreescribir un trigger existente. Si se omite, y el trigger existe, se producirá, un error.

    Los triggers pueden definirse para las operaciones INSERT, UPDATE o DELETE, y pueden ejecutarse antes o después de la operación.   El modificador BEFORE AFTER indica que el trigger se ejecutará antes o despues de ejecutarse la sentencia SQL definida por DELETE INSERT  UPDATE. Si incluimos el modificador OF el trigger solo se ejecutará cuando la sentencia SQL afecte a los campos incluidos en la lista.

    El alcance de los disparadores puede ser la fila o de orden. El modificador FOR EACH ROW indica que el trigger se disparará cada vez que se realizan operaciones sobre una fila de la tabla. Si se acompaña del modificador WHEN, se establece una restricción; el trigger solo actuará, sobre las filas que satisfagan la restricción.

    La siguiente tabla resume los contenidos anteriores.

Valor

Descripción

INSERT, DELETE, UPDATE Define qué tipo de orden DML provoca la activación del disparador.
BEFORE , AFTER Define si el disparador se activa antes o después de que se ejecute la orden.
FOR EACH ROW Los disparadores con nivel de fila se activan una vez por cada fila afectada por la orden que provocó el disparo. Los disparadores con nivel de orden se activan sólo una vez, antes o después de la orden. Los disparadores con nivel de fila se identifican por la cláusula FOR EACH ROW en la definición del disparador.

    La cláusula WHEN sólo es válida para los disparadores con nivel de fila.

    Dentro del ambito de un trigger disponemos de las variables OLD y NEW . Estas variables se utilizan del mismo modo que cualquier otra variable PL/SQL, con la salvedad de que no es necesario declararlas, son de tipo %ROWTYPE y contienen una copia del registro antes (OLD) y despues(NEW) de la acción SQL (INSERT, UPDATE, DELTE) que ha ejecutado el trigger. Utilizando esta variable podemos acceder a los datos que se están insertando, actualizando  o borrando.

    El siguiente ejemplo muestra un trigger que inserta un registro en la tabla PRECIOS_PRODUCTOS cada vez que insertamos un nuevo registro en la tabla PRODUTOS:


CREATE OR REPLACE TRIGGER TR_PRODUCTOS_01
  AFTER INSERT ON PRODUCTOS 
  FOR EACH ROW
DECLARE
  -- local variables
BEGIN
  INSERT INTO PRECIOS_PRODUCTOS
  (CO_PRODUCTO,PRECIO,FX_ACTUALIZACION)
  VALUES
  (:NEW.CO_PRODUCTO,100,SYSDATE);
END ;

    El trigger se ejecutará cuando sobre la tabla PRODUCTOS se ejecute una sentencia INSERT.


INSERT INTO PRODUCTOS
(CO_PRODUCTO, DESCRIPCION)
VALUES
('000100','PRODUCTO 000100');

Orden de ejecución de los triggers

    Una misma tabla puede tener varios triggers. En tal caso es necesario conocer el orden en el que se van a ejecutar.

    Los disparadores se activan al ejecutarse la sentencia SQL.

  • Si existe, se ejecuta el disparador de tipo BEFORE (disparador previo) con nivel de orden.
  • Para cada fila a la que afecte la orden:
    • Se ejecuta si existe, el disparador de tipo BEFORE con nivel de fila.
    • Se ejecuta la propia orden.
    • Se ejecuta si existe, el disparador de tipo AFTER (disparador posterior) con nivel de fila.
  • Se ejecuta, si existe, el disparador de tipo AFTER con nivel de orden. 

Restricciones de los triggers

    El cuerpo de un trigger es un bloque PL/SQL. Cualquier orden que sea legal en un bloque PL/SQL, es legal en el cuerpo de un disparador, con las siguientes restricciones:

  • Un disparador no puede emitir ninguna orden de control de transacciones: COMMIT, ROLLBACK o SAVEPOINT. El disparador se activa como parte de la ejecución de la orden que provocó el disparo, y forma parte de la misma transacción que dicha orden. Cuando la orden que provoca el disparo es confirmada o cancelada, se confirma o cancela también el trabajo realizado por el disparador.
  • Por razones idénticas, ningún procedimiento o función llamado por el disparador puede emitir órdenes de control de transacciones.
  • El cuerpo del disparador no puede contener ninguna declaración de variables LONG o LONG RAW


Utilización de :OLD y :NEW

    Dentro del ambito de un trigger disponemos de las variables OLD y NEW . Estas variables se utilizan del mismo modo que cualquier otra variable PL/SQL, con la salvedad de que no es necesario declararlas, son de tipo %ROWTYPE y contienen una copia del registro antes (OLD) y despues(NEW) de la acción SQL (INSERT, UPDATE, DELTE) que ha ejecutado el trigger. Utilizando esta variable podemos acceder a los datos que se están insertando, actualizando  o borrando.

    La siguiente tabla muestra los valores de OLD y NEW.

ACCION SQL

OLD

NEW

INSERT No definido; todos los campos toman valor NULL. Valores que serán insertados cuando se complete la orden.
UPDATE Valores originales de la fila, antes de la actualización. Nuevos valores que serán escritos cuando se complete la orden.
DELETE Valores, antes del borrado de la fila. No definidos; todos los campos toman el valor NULL.

    Los registros OLD y NEW son sólo válidos dentro de los disparadores con nivel de fila.

    Podemos usar OLD y NEW como cualquier otra variable PL/SQL.

Utilización de predicados de los triggers: INSERTING, UPDATING y DELETING

    Dentro de un disparador en el que se disparan distintos tipos de órdenes DML (INSERT, UPDATE y DELETE), hay tres funciones booleanas que pueden emplearse para determinar de qué operación se trata. Estos predicados son INSERTING, UPDATING y DELETING.

    Su comportamiento es el siguiente:

Predicado

Comportamiento

INSERTING TRUE si la orden de disparo es INSERT; FALSE en otro caso.
UPDATING TRUE si la orden de disparo es UPDATE; FALSE en otro caso.
 DELETING TRUE si la orden de disparo es DELETE; FALSE en otro caso.

 


Inicio | Tutorial PL/SQL Funciones en PL/SQLTutorial PL/SQLSubprogramas en bloques anónimos Versión para imprimir Foros de consulta

 
muy buena ayuda por robson salazar
Respuesta recibida el [06/07/2007 03:21:31]
esta pagina esta muy buena porque nos ayuda a saber lo principal sobre los triggers

 
Cancelar un trigger en plena ejecución por Hugo Contrears
Respuesta recibida el [23/08/2007 12:29:50]
Com úedo hacer para dada una condición desde un trigger tipo BEFORE UPDATE, mandar a detener el mismo y que no se ejecute la transacción.

 
Excelente ayuda por Celin
Respuesta recibida el [18/10/2007 09:43:00]
hoy si que realmente me queda claro el concepto de Triger y la dudo que tenia sobre las variables OLD y NEW sigan asi esta excelente

 
g... por Anónimo
Respuesta recibida el [23/10/2007 03:18:18]
       g

 
Bien explicado por Renato de Buenos Aires, Argentina
Respuesta recibida el [31/10/2007 09:12:13]
Pedro:

Tu página ha sido de mucha utilidad para mí que estoy en mi primer
experiencia laboral en sistemas.

Gracias a tu explicación comprendí bien el concepto de triggers y de verdad los estaba necesitando para mis desarrollos personales. Los comenzaré a utilizar.

Gracias,un saludo, Renato!

 
eres un crack... por yo
Respuesta recibida el [12/11/2007 04:10:48]
eres un crack

 
garcais hermano por kaiser
Respuesta recibida el [22/11/2007 11:48:17]
hasta ganas de llorar me dan. Comrpendi temas que jamas pensaria que lo iba hacer de una amnera muy rapida.

 
GRACIAS por jcho360
Respuesta recibida el [23/11/2007 11:16:38]
solo para seguir agregando lo mismo q los demas, GRACIAS c entiende bastante bien!

 
GRACIAS TAMBIEN por Diego Laciar
Respuesta recibida el [29/11/2007 04:02:49]
SOS UN KPO!!! muy util toda la data.
GRACIAS !!

 
Excelente!!!Gracias por Day
Respuesta recibida el [29/01/2008 10:49:51]
ESta demasiado bueno este artículo, me fue muy útil. De verdad Gracias... Sigue escribiendo artículos como este . Te felicito!!!

 
Crítica Constructiva por Claudia
Respuesta recibida el [04/02/2008 12:10:16]
Excelente tutorial, pero en el caso de los triggers podrías dar más detalles acerca de las tablas mutantes.

 
Las tablas mutantes son un tem... por Devjoker
Respuesta recibida el [04/02/2008 01:26:24]
Las tablas mutantes son un tema avanzado y sale fuera del alcance de este tutorial. Quizas algún día me anime a incluirlo ... :-), de momento tomo nota.

 
Muy completo por Nathan
Respuesta recibida el [27/02/2008 01:58:20]
Muchas gracias por todo este tutorial de PL SQL Pedro, no eres de mucha ayuda a todos los que entramos a despejar dudas!

 
Corrección! por Nathan
Respuesta recibida el [27/02/2008 01:59:39]
Quise decir que "nos eres" de mucha ayuda a todos los que entramos a despejar dudas, lo siento!!! Y Gracias de nuevo!

 
Alguien que sabe decir como se hace por Alvaro
Respuesta recibida el [13/03/2008 07:16:49]
Muchas gracias. El documento es perfectamente claro y se entiende coompletamente que es, para que sirve y como se crea o modifica un trigger. Muchas gracias.

 
Excelente Ayuda!!! Te felicito!! por Manuel R. Bercian
Respuesta recibida el [04/04/2008 04:20:04]
Gracias por hacer esta ayuda, y ademas de eso hacerla tan facil de entender, aparte de eso, si sabes de algun lugar o si tu sabes tambien de Developer no dudes en comentarlo, que me seria de Gran Ayuda!!
Te felicito!!
Sigue Adelante!! desde Guatemala!!

 
excelente por rOLO
Respuesta recibida el [08/04/2008 01:59:20]
eres un huevo carton!!

 
correo electrónico por Elizabeth
Respuesta recibida el [06/05/2008 12:14:06]
cómo hago un trigger que antes de borrar una serie de registros me mande un correo electrónico

 
ESTA SUPER ESTE TUTORIAL ... por JRAG
Respuesta recibida el [22/05/2008 05:05:28]
ESTA SUPER ESTE TUTORIAL 

 
gracias por jesus
Respuesta recibida el [23/05/2008 10:21:58]
gracias esta full esta pagina gracias x todo

 
Hola por may
Respuesta recibida el [30/05/2008 11:18:48]
Super interesante y muy util, gracias

 
ejemplos y teoria por Freddyldo
Respuesta recibida el [03/06/2008 04:56:29]
Mejor q las clases q estoy pagando en la universidad jajaja
saludos
grax

 
Obtener el nuevo valor de un varray al hacer una insercion por juan
Respuesta recibida el [17/06/2008 10:05:10]
Hermano buenas noches tengo el sig problema:

tengo una tabla asi
create xxxxx(
atributo arreglo_de_tda
);

cuando voy a hacer una insercion necesito validar con el elemento de ese arreglo de tda pero no me deja accesar con el :new coomo hago¿?? auxilioo

 
soy gay por pelliza
Respuesta recibida el [24/06/2008 08:11:12]
holi soy pelliza no quiero dar datos personales pero lamentablemente me violaron cuando chico 
igual me pueden llamar mi numero se busca en las guias con el nombre de pelliza te lo masco ya eso era

saludos

 
quote a juan por luxo kandia el violao de turno
Respuesta recibida el [24/06/2008 08:17:26]
quote a juan:

hace una tabla asi

tienes una vagina asi
tu hermana xxx(
legusta_la_colloma
);

asi como la mia, cuando le hacen la insercion le necesitan arreglar el shiko con el elemento de ese negro
asi te deja accesar

despues pides auxilio xD
asi = que yo =P

 
gracias por mg
Respuesta recibida el [01/07/2008 09:33:48]
esta buena la pag

 
Prestame una pelicula por no
Respuesta recibida el [25/07/2008 11:32:17]
ja!

 
buenaza la pagina por nhoemy
Respuesta recibida el [01/09/2008 09:08:16]
muy buena la pagina esta bien detallada fue de mucha ayuda para mi espero que sigan actualizandola 

 
Muy buena pagina por David Gomez
Respuesta recibida el [17/12/2008 07:24:42]
Hola encontrado esta pagina y me parece de gran ayuda.
Mira tengo un problema.en una tabla quiero que antes de actualizar un campo haga unas comprobaciones y si no las cumple que no lo actualize....que tendria que hacer para esto?
-Creando una excepcion no me lo actulizaria?
-por que rollback o actulizar sobre la tabla con update nose puede no?

Muchas Gracias

 
Evitar Actualizen Tabla por Mary
Respuesta recibida el [22/12/2008 04:16:08]
Se que es tarde, pero al que pregunto mas o menos como podia evitar que se actualizaran los datos de su tabla usando un BEFORE UPDATE en un trigger podia haber hecho algo asi :

create trigger trigo
before update on ejemplo
for each row
begin
if (UPDATING) then
:new.NOMBRECITO := :old.NOMBRECITO;
end if;
end trigo;
/

puse 1 solo campo de la tabla, pero deberian agregar el resto de campos que no quieren que se actualizen y siempre se mantengan con los datos viejos.


 
evitar modificar datos por leorock
Respuesta recibida el [12/01/2009 03:31:35]
wenas quisiera saber como puedo impedir la modificacion de los datos.
--11. Se trata de escribir un trigger que vigile las inserciones, modificaciones
--y eliminaciones de la tabla Alumno. El trigger debe:
-- impedir las modificaciones del DNI,
-- impedir que se borren alumnos que tengan alguna nota superior a cinco,
--impedir que se inserten alumnos que hayan sido expulsados previamente.
--( Es necesario la tabla AlumnosExpulsados(DNI, NumEmpediente) ).

 
ejemplito de... por Eduardo
Respuesta recibida el [16/01/2009 09:10:27]
Hola, quisera ver un ejemplo de INSERTING, UPDATING y DELETINGun ejemplito practico de como se aplica

 
super por jessica
Respuesta recibida el [08/02/2009 11:00:36]
HOLA...
SUPER LA INFORMACION
GRACIAS

 
Gracias por Tu Ayuda por Alexa
Respuesta recibida el [20/02/2009 06:25:22]
La Explicacion q  has dado ha  estado muy buena.. has ayudado a muchos..! 

Gracias.

 
problema con triggers con FOLLOWS por Miguel H.
Respuesta recibida el [19/03/2009 01:31:44]
Hola buen dia.

Tengo el siguiente problema.Tengo varios disparadores que requieren ser activados despues de otros par alo cual utilizo la clausula FOLLOWS esto en la version 11g de oracle. Ahora bien, necesito crear algo parecido en una version Oracle 10G.
Agradeceria mucho la ayuda de alguien.

 
Backup Usuario Oracle por Sandra
Respuesta recibida el [27/03/2009 08:26:43]
Hola una consulta, como puedo hacer para hacer un backup de un usuario del Oracle??

 
qué es esto? por Soni
Respuesta recibida el [03/04/2009 12:39:52]
encontré esta sentencia y no sé que me quiere decir, según el tutorial las variables NEW y OLD no son obligatorias de declarar..

referencing NEW as NEW OLD as OLD

 
instead of por Dani
Respuesta recibida el [28/05/2009 01:40:44]
Estaría bien ampliar este buen tutorial con los triggers de sustitución aplicados a vistas. Es una utilidad bastante importante dentro del desarrollo de las bases de datos, yo lo utilizo mucho. Reciban un cordial saludo.

 
no se, it's ok por ur.male
Respuesta recibida el [30/05/2009 08:21:22]
esta buen o el tutoriual 

I'll ready it again

 
gracias por Alexis
Respuesta recibida el [23/06/2009 12:05:55]
Excelente tutorial, empecé desde cero y no pensé que algo así me ayudara tanto

 
CREATE OR REPLACE TRIGGER Inse... por yop
Respuesta recibida el [26/06/2009 04:11:15]
CREATE OR REPLACE TRIGGER Insertempleado
AFTER INSERT OR UPDATE
ON employees
FOR EACH ROW
BEGIN
IF INSERTING THEN
Insert into jobs(job_id, job_title, min_salary, max_salary) values('A', 'A', 0, 1);
ELSE
dbms_output.put_line(' No se ha podido realizar la accion ');
END IF;
END Insertempleado;

 
CREATE OR REPLACE TRIGGER ne... por yop
Respuesta recibida el [26/06/2009 04:11:48]

CREATE OR REPLACE TRIGGER newDepartamento
BEFORE INSERT ON departments
FOR EACH ROW
DECLARE
msg_error VARCHAR2(30) := 'El Trigger ha sido disparado';
BEGIN
:new.department_id:=500;
dbms_output.put_line(msg_error || ' : El registro fue ingresado ');
END newDepartamento;


insert into departments(department_id, department_name, manager_id, location_id)
values(500, 'algo', 100, 1500);


delete from departments
where department_id=500;

select * from departments

drop trigger departamentos


 
como creear triggers por Pablo Patiño Cuevas
Respuesta recibida el [30/06/2009 09:51:46]
Sintasis deun trigger en sql servert 2000 

 
yo por yo
Respuesta recibida el [01/07/2009 07:20:34]
criss

 
qqq... por Anónimo
Respuesta recibida el [01/07/2009 07:37:33]
qqq

 
q posteo? ... por Anónimo
Respuesta recibida el [01/07/2009 07:37:53]
q posteo?

 
la de los package la 1... por yo
Respuesta recibida el [01/07/2009 07:38:38]
la de los package la 1

 
llamulle no cacho ... por Anónimo
Respuesta recibida el [01/07/2009 07:39:43]
llamulle no cacho

 
di las alternativas!!! ... por Anónimo
Respuesta recibida el [01/07/2009 07:40:13]
di las alternativas!!!

 
v f f v v X X v X X... por yo
Respuesta recibida el [01/07/2009 07:41:42]
v
f
f
v
v
X
X
v
X
X

 
k xamullaste?... por yo
Respuesta recibida el [01/07/2009 07:42:10]
k xamullaste?

 
vfffvvvvvv... por Anónimo
Respuesta recibida el [01/07/2009 07:43:16]
vfffvvvvvv

 
Estraordinario por LordGibbs
Respuesta recibida el [07/09/2009 04:39:43]
Amigo, que simple haces la vida con esta pag, esta todo y directo sin perder el tiempo he aprendido muchisimo.... MILLONES DE AGRADECIMIENTOS.


 
la tecnico con lo casto,excele... por Anónimo
Respuesta recibida el [08/11/2009 10:49:35]
la tecnico con lo casto,excelente


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

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial PL/SQL Funciones en PL/SQLTutorial PL/SQLSubprogramas en bloques anónimos Versión para imprimir

Triggers en PL/SQL
Autor: Pedro Herrarte Sánchez
Visitas: 106507 Fecha de publicación: 28/06/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: 106 | Comentarios: 3 | Archivo: Articulos
02/02/2010 iPad vs Telesketch
Visitas: 806 | Comentarios: 2 | Archivo: Articulos
Categorias: Humor
Visitas: 762 | Comentarios: 3 | Archivo: Articulos
Visitas: 3174 | Comentarios: 2 | Archivo: Articulos
Categorias: C#
Visitas: 14553 | Comentarios: 7 | Archivo: Articulos
Categorias: C#|Seguridad
Visitas: 1492 | 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 ...
devolver consulta en form builder de oracle con like por cesar10lb ... [ORACLE] 0 13/03/2010
certificado por jhon jairo vargas ... [Actualidad] 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 ...
24/05/2006 Cursores Explicitos en PL/SQL    forma parte de...Tutorial PL/SQL
10/10/2006 Como conectar a ORACLE con Java
22/03/2008 Problemas al conectar a redes wifi con Windows Vista
09/10/2006 Cadenas de texto    forma parte de...Tutorial C#
06/05/2007 Introducción a Transact SQL    forma parte de...Tutorial de Transact SQL
03/10/2006 Programacion con C#    forma parte de...Tutorial C#
24/05/2006 Cursores Implicitos en PL/SQL    forma parte de...Tutorial PL/SQL
03/01/2007 Tipos anulables    forma parte de...Tutorial C#
11/10/2006 Métodos    forma parte de...Tutorial C#
02/09/2007 Procedimientos almacenados en Transact SQL    forma parte de...Tutorial de Transact SQL

 

Encuesta
¿A que perfil te adaptas mejor?




[Ver] [Votar]