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

Afiliados
La Web del programador
MundoProgramacion


 

Cursores de actualización

Declaración y utiización de cursores de actualización.

    Los cursores de actualización se declarán igual que los cursores explicitos, añadieno FOR UPDATE al final de la sentencia select.


CURSOR nombre_cursor IS instrucción_SELECT
FOR UPDATE

   Para actualizar los datos del cursor hay que ejecutar una sentencia UPDATE especificando la clausula WHERE CURRENT OF <cursor_name>.


UPDATE <nombre_tabla> SET
<campo_1> = <valor_1>
[,<campo_2> = <valor_2>]
WHERE CURRENT OF <cursor_name>

    El siguiente ejemplo muestra el uso de un cursor de actualización:


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;

    Cuando trabajamos con cursores de actualización debemos tener en cuenta las siguientes consideraciones:

  • Los cursores de actualización generan bloqueos en la base de datos.

 


Inicio | Tutorial PL/SQL Cursores Explicitos en PL/SQLTutorial PL/SQLExcepciones en PL/SQL Versión para imprimir Foros de consulta

 
No entiendo el final por Luis
Respuesta recibida el [29/11/2007 07:58:07]
Cuando trabajamos con cursores de actualización debemos tener en cuenta las siguientes consideraciones:

* Los cursores de actualización generan bloqueos en la base de datos.

¿Que quieres decir con esto, Pedro?

 
RE:No entiendo el final por Luis por martin g.
Respuesta recibida el [10/01/2008 07:12:20]
Luis, los cursores for update, bloquean las rows sobre las que actúan. Entonces, no se puede acceder a esas rows.--- 
FOR UPDATE options
This is often used within SL/SQL routines to lock the selected rows.
Oracle will wait for any locks to be released unless you specify NOWAIT

FOR UPDATE [OF [ [schema.]{table|view}.] column] [NOWAIT]


Undocumented syntax:

SELECT... FOR UPDATE SKIP LOCKED

Skip Locked will return all the 'non-locked' rows and lock them. While this syntax can be used effectively, it is generally not a good idea to use it within an application as undocumented syntax may be removed or changed in future releases.

 
tiempo de bloqueo por Fany
Respuesta recibida el [13/03/2008 03:12:11]
HOLAA!!
Siguiendo la pregunta de los bloqueos, por cuanto tiempo se realiza el bloqueo de las rows? este se realiza un tiempo determinado o solo mientras dura la ejecución de la sentencia Update?

 
Tiempo Bloqueo por Doro
Respuesta recibida el [17/03/2008 01:28:09]
Dura mientras se ejecuta la sentencia

 
bloqueo por Betty
Respuesta recibida el [12/05/2008 12:32:32]
Hola, como hago si en una forma estoy ejecutando un campo de la tabla de S a N, yo uso en la forma el post y al final uso el commit, pero antes de hacer el commit entra otro proceso que pregunta por el campo que estoy actualizando en la forma como no he hecho el commit va a ver el dato anterior y hace lo que tiene que hacer y hace que en la forma me presente al final un # de operacion que no es la que estaba actualizando.

 
necesito ayuda por isac
Respuesta recibida el [09/10/2008 01:35:57]
podrias poner el ejemplo de un cursor que haga a insercion de datos de una tabla a otra?

 
Optimisar un Cursor o Reemplasarlo por Mario M
Respuesta recibida el [23/10/2008 01:32:42]
Hola tengo este cursor pero se lleva mucho tienpo de ejecución; ¿Como puedo optimizarlo?

vfecha DATE;--AGREGADO VMRP 18/01/2006

CURSOR C_CONTRATOS IS
SELECT /* +ALL_ROWS*/ PC.NNO_CLIENTE NCLIENTE,
PC.VCVE_PERIODO PERIODO,
PC.NPRIMER_DIA PRIMER_DIA,
PC.NSEGUNDO_DIA SEGUNDO_DIA,
PC.DDIA_GENERACION DIA_GENERACION,
PC.DDIA_ANTERIOR DIA_ANTERIOR
FROM SET_TPERIODOS_CONTRATOS PC
WHERE TRUNC(PC.DDIA_GENERACION) <= vfecha;--TRUNC(SYSDATE) MODIFICADO VMRP 18/01/2006
/* AND EXISTS ( SELECT 1 FROM CLIENTES_CONTRATOS CC
WHERE CC.CLI_NO_CLIENTE = PC.NNO_CLIENTE
AND CC.VALIDADO = 'S'
AND (CC.FECHA_FIN IS NULL OR TRUNC(CC.FECHA_FIN) > TRUNC(SYSDATE)));
*/ -- MOD. 001
v_ctOrdenes NUMBER;
v_ctTxOk NUMBER;
v_ctTxAn NUMBER;
v_TotTx NUMBER;
v_sucursal SUCURSALES.no_sucursal%TYPE;
v_domicilio NUMBER;
v_folio NUMBER;
v_serie VARCHAR2(3);
v_dia NUMBER;
v_siguienteDia DATE;
v_diaAux NUMBER;
v_mesAux NUMBER;
v_anAux VARCHAR2(2);



BEGIN

/***** BLOQUE AGREGADO VMRP 18/01/2006 ***/
vfecha := TRUNC(SYSDATE);
/***** FIN BLOQUE AGREGADO VMRP 18/01/2006 ***/

FOR CCON IN C_CONTRATOS LOOP
BEGIN

/* * 1.1.1 CANTIDAD DE ORDENES DE COBRO POR INCLUIR AL ESTADO DE CUENTA * */
SELECT /*+all_rows*/ SUM(cantidad) INTO v_ctOrdenes
FROM (SELECT /*+all_rows*/ COUNT(*) cantidad
FROM SET_TORDENES_COBRO OC, SET_TCARGOS_COBROS CA, CLIENTES_CONTRATOS CC
WHERE
OC.NNO_EDO_CUENTA IS NULL
AND CA.NIMPORTE > 0
AND OC.VPAGADA = 'S'
AND OC.DFECHA_EMISION <= TO_DATE(TO_CHAR(ccon.dia_generacion,'dd/mm/yyyy')||' 23:59:59','dd/mm/yyyy hh24:mi:ss')/*agregado VRMP 18/01/2006*/
AND OC.NNO_COBRO = CA.NNO_COBRO
AND OC.VSERIE = CA.VSERIE
AND OC.NNO_CONTRATO = CC.NO_CONTRATO
AND CC.CLI_NO_CLIENTE= CCON.NCLIENTE
UNION ALL
SELECT /*+all_rows*/ COUNT(*) cantidad
FROM SET_TORDENES_COBRO OC, SET_TCARGOS_COBROS CA, CLIENTES_CONTRATOS CC
WHERE OC.NNO_EDO_CTA_C IS NULL
AND CA.NIMPORTE > 0
AND OC.VPAGADA = 'S'
AND OC.DFECHA_CANCELACION <= TO_DATE(TO_CHAR(ccon.dia_generacion,'dd/mm/yyyy')||' 23:59:59','dd/mm/yyyy hh24:mi:ss')/*agregado VRMP 18/01/2006*/
AND OC.VSERIE = CA.VSERIE
AND OC.NNO_CONTRATO = CC.NO_CONTRATO
AND CC.CLI_NO_CLIENTE = CCON.NCLIENTE
AND OC.NNO_COBRO = CA.NNO_COBRO
); --mod.001

/* * 1.1.2 CANTIDAD DE TRANSACCIONES DEL CLIENTE QUE AUN NO ESTAN INCLUIDOS EN ESTADOS DE CUENTA * */
SELECT /*+ INDEX(CM CMO_PK)*/ COUNT(*) INTO v_ctTxOk --MOD. 001.
FROM CUENTAS_MOVIMIENTOS CM, CUENTAS C
WHERE CM.NNO_EDO_CUENTA IS NULL
AND CM.TMO_CVE_MOVIMIENTO IN ('DGA','DEV','ARS')
AND CM.FECHA_CONCILIACION <= TO_DATE(TO_CHAR(ccon.dia_generacion,'dd/mm/yyyy')||' 23:59:59','dd/mm/yyyy hh24:mi:ss') -- Mod. 003.
AND CM.TE_CVE_ESTADO <> 'TED'
AND CM.CUE_NO_CUENTA = C.NO_CUENTA
AND CM.CUE_BAN_CVE_BANCO = C.BAN_CVE_BANCO
AND C.CHB_CLI_NO_CLIENTE = CCON.NCLIENTE;

/* * 1.1.2.6 TRANSACCIONES ANOMALAS * */
SELECT /*+ ALL_ROWS*/ COUNT(*) INTO v_ctTxAn
FROM SET_TCUENTAS_MOV_ANOMALIAS AN, CUENTAS C
WHERE
AN.NNO_EDO_CUENTA IS NULL
AND AN.NCVE_ANOMALIA NOT IN (4,5)
AND AN.TMO_CVE_MOVIMIENTO IN ('DEV','DGA') /*agregado VRMP 18/01/2006*/
AND AN.FECHA_CONCILIACION <= TO_DATE(TO_CHAR(ccon.dia_generacion,'dd/mm/yyyy')||' 23:59:59','dd/mm/yyyy hh24:mi:ss')/* Mod. 003.*/
AND AN.CUE_NO_CUENTA = C.NO_CUENTA
AND AN.CUE_BAN_CVE_BANCO = C.BAN_CVE_BANCO
AND C.CHB_CLI_NO_CLIENTE = CCON.NCLIENTE;

v_TotTx := v_ctOrdenes + v_ctTxOk + v_ctTxAn;
IF v_TotTx > 0 THEN
/* * 1.2.1 OBTENER LA SUCURSAL DE FACTURACION * */
/** sE MODIFICA LA obtencion del dato VMRP 18/1/2006*/
/* SELECT UB.RUT_SUC_NO_SUCURSAL,
DF.NO_DOMICILIO
INTO v_sucursal,
v_domicilio
FROM UBICACIONES UB, DOMICILIOS_FISCALES DF
WHERE DF.UBI_NO_UBICACION = UB.NO_UBICACION
AND DF.CLI_NO_CLIENTE = CCON.NCLIENTE
AND DF.INACTIVO = 'N'
AND ROWNUM = 1;*/

SELECT /*+ALL_ROWS*/UB.RUT_SUC_NO_SUCURSAL,
DF.NO_DOMICILIO
INTO v_sucursal,
v_domicilio
FROM UBICACIONES UB, DOMICILIOS_FISCALES DF, SET_TDOMICILIOS_EDO_CUENTA domedo
WHERE domedo.nno_cliente = DF.CLI_NO_CLIENTE
AND domedo.ndomicilio_fiscal= df.no_domicilio
AND DF.UBI_NO_UBICACION = UB.NO_UBICACION
AND domedo.NNO_CLIENTE = CCON.NCLIENTE
-- AND DF.INACTIVO = 'N'
AND ROWNUM = 1;


/* * 1.2.2 CAMBIAR LA SUCURSAL DEL USUARIO * */
/* UPDATE EMPLEADOS SET SUC_NO_SUCURSAL = v_sucursal
WHERE NO_EMPLEADO IN ( SELECT VALOR
FROM PARAMETROS
WHERE CVE_PARAMETRO = 'EEC');*/

/* * 1.2.3 OBTENER FOLIO Y SERIE * */
v_folio := Pkg_Obten.FOLIO_DOCTO('ECC', v_serie,v_sucursal);

/* * 1.2.4 REGISTRAR EL ESTADO DE CUENTA * */

INSERT INTO SET_TESTADOS_CUENTA (
NNO_EDO_CUENTA,
VSERIE,
NNO_CLIENTE,
DFECHA_GENERACION,
DFECHA_INICIO,
DFECHA_FIN,
VIMPRESO,
NSUCURSAL,
NDOMICILIO_FISCAL)
VALUES( v_folio,v_serie,CCON.NCLIENTE,SYSDATE,(CCON.DIA_ANTERIOR +1),
TRUNC(CCON.DIA_GENERACION),/*TRUNC(SYSDATE), Modificado VMRP 18/01/2006 */
'N',v_sucursal,v_domicilio );

/* * 1.2.5 ACTUALIZA LAS ORDENES DE COBRO DEL CLIENTE * */
UPDATE SET_TORDENES_COBRO
SET NNO_EDO_CUENTA = v_folio,
VSERIE_EDO_CUENTA = v_serie
WHERE NNO_EDO_CUENTA IS NULL
AND NIMPORTE_TOTAL > 0
AND DFECHA_EMISION <= TO_DATE(TO_CHAR(ccon.dia_generacion,'dd/mm/yyyy')||' 23:59:59','dd/mm/yyyy hh24:mi:ss')--agregado VRMP 18/01/2006
AND VPAGADA = 'S' -- mod. 001
AND NNO_CONTRATO IN ( SELECT NO_CONTRATO FROM CLIENTES_CONTRATOS CC
WHERE CC.NO_CONTRATO = NNO_CONTRATO
AND CC.CLI_NO_CLIENTE = CCON.NCLIENTE);

/* * 1.2.5.1 ACTUALZA LAS ORDENES DE COBRO CANCELADAS DEL CLIENTE mod. 001 * */
UPDATE SET_TORDENES_COBRO
SET NNO_EDO_CTA_C = v_folio,
VSERIE_EDO_CTA_C = v_serie
WHERE NNO_EDO_CTA_C IS NULL
AND NIMPORTE_TOTAL > 0
AND DFECHA_CANCELACION <= TO_DATE(TO_CHAR(ccon.dia_generacion,'dd/mm/yyyy')||' 23:59:59','dd/mm/yyyy hh24:mi:ss')--agregado VRMP 18/01/2006
AND VPAGADA = 'S'
AND NNO_CONTRATO IN ( SELECT NO_CONTRATO
FROM CLIENTES_CONTRATOS CC
WHERE CC.NO_CONTRATO = NNO_CONTRATO
AND CC.CLI_NO_CLIENTE = CCON.NCLIENTE);

/* * 1.2.6 ACTUALIZAMOS LAS TRANSACCIONES OK CON EL FOLIO Y LA SERIE DEL ESTADO DE CUENTA MOD. 001 * */
UPDATE /*+ INDEX(CM CMO_PK)*/ CUENTAS_MOVIMIENTOS CM
SET CM.NNO_EDO_CUENTA = v_folio,
CM.VSERIE = v_serie
WHERE CM.NNO_EDO_CUENTA IS NULL
AND CM.TMO_CVE_MOVIMIENTO IN ('DGA','DEV','ARS')
-- AND CM.FECHA_MOVIMIENTO <= to_date(to_char(ccon.dia_generacion,'dd/mm/yyyy')||' 23:59:59','dd/mm/yyyy hh24:mi:ss')--agregado VRMP 18/01/2006
AND CM.FECHA_CONCILIACION <= TO_DATE(TO_CHAR(ccon.dia_generacion,'dd/mm/yyyy')||' 23:59:59','dd/mm/yyyy hh24:mi:ss')-- Mod. 003.
AND CM.TE_CVE_ESTADO <> 'TED'
AND (CM.CUE_NO_CUENTA,CM.CUE_BAN_CVE_BANCO) IN ( SELECT /*+ALL_ROWS*/ NO_CUENTA,BAN_CVE_BANCO
FROM CUENTAS C
WHERE C.NO_CUENTA = CM.CUE_NO_CUENTA
AND C.BAN_CVE_BANCO = CM.CUE_BAN_CVE_BANCO
AND C.CHB_CLI_NO_CLIENTE = CCON.NCLIENTE);

UPDATE SET_TCUENTAS_MOV_ANOMALIAS AN
SET AN.NNO_EDO_CUENTA = v_folio,
AN.VSERIE = v_serie
WHERE AN.NNO_EDO_CUENTA IS NULL
AND (CUE_NO_CUENTA,CUE_BAN_CVE_BANCO) IN ( SELECT /*ALL_ROWS*/ NO_CUENTA,BAN_CVE_BANCO FROM CUENTAS C
WHERE AN.NCVE_ANOMALIA NOT IN (4,5)
AND AN.TMO_CVE_MOVIMIENTO IN ('DGA','DEV')/*agregado VRMP 18/01/2006*/
AND AN.FECHA_CONCILIACION <= TO_DATE(TO_CHAR(ccon.dia_generacion,'dd/mm/yyyy')||' 23:59:59','dd/mm/yyyy hh24:mi:ss')
AND C.NO_CUENTA = AN.CUE_NO_CUENTA
AND C.BAN_CVE_BANCO = AN.CUE_BAN_CVE_BANCO
AND C.CHB_CLI_NO_CLIENTE = CCON.NCLIENTE);--Mod. 003.




END IF;

SELECT /*+ALL_ROWS*/ TO_NUMBER(TO_CHAR(SYSDATE,'DD')) INTO v_dia FROM DUAL;
IF CCON.PERIODO = 'MEN' THEN
v_siguienteDia := CCON.DIA_GENERACION;
-- v_siguienteDia := ADD_MONTHS(CCON.DIA_GENERACION,1);
LOOP
v_siguienteDia := ADD_MONTHS(v_siguienteDia,1);
IF TO_NUMBER(TO_CHAR(v_siguienteDia,'MM')) = 2 THEN
IF CCON.PRIMER_DIA IN (29,30,31) THEN
v_siguienteDia := LAST_DAY(v_siguienteDia);
ELSE
v_siguienteDia := DATE(CCON.PRIMER_DIA||'/'||TO_CHAR(v_siguienteDia,'mm')||'/'||TO_CHAR(v_siguienteDia,'yy'),'dd/mm/yy');
END IF;
ELSE
IF CCON.PRIMER_DIA = 31 THEN
v_siguienteDia := LAST_DAY(v_siguienteDia);
ELSE
v_siguienteDia := DATE(CCON.PRIMER_DIA||'/'||TO_CHAR(v_siguienteDia,'mm')||'/'||TO_CHAR(v_siguienteDia,'yy'),'dd/mm/yy');
END IF;
END IF;
IF TRUNC(v_siguienteDia) > TRUNC(SYSDATE) THEN
EXIT;
END IF;
END LOOP;
ELSE IF CCON.PERIODO = 'QNL' THEN
IF CCON.PRIMER_DIA > v_dia OR (v_dia >= CCON.PRIMER_DIA AND v_dia >= CCON.SEGUNDO_DIA) THEN
v_diaAux := CCON.PRIMER_DIA;
v_mesAux := TO_NUMBER(TO_CHAR(ADD_MONTHS(CCON.DIA_GENERACION,1),'MM'));
v_anAux := TO_CHAR(ADD_MONTHS(CCON.DIA_GENERACION,1),'YY');
ELSE
v_diaAux := CCON.SEGUNDO_DIA;
v_mesAux := TO_NUMBER(TO_CHAR(CCON.DIA_GENERACION,'MM'));
v_anAux := TO_CHAR(CCON.DIA_GENERACION,'YY');
END IF;
IF v_diaAux = 31 OR (v_diaAux = 30 OR v_diaAux = 29 AND v_mesAux = 2) THEN
v_diaAux := TO_NUMBER(TO_CHAR(LAST_DAY(TO_DATE(v_mesAux||'/'||v_anAux,'MM/YY')),'DD'));
END IF;
v_siguienteDia := TO_DATE(v_diaAux||'/'||v_mesAux||'/'||v_anAux||' 00:00:00','DD/MM/YY HH24:MI:SS');
ELSE
v_siguienteDia := TRUNC(SYSDATE)+1;
LOOP
IF TO_NUMBER(TO_CHAR(v_siguienteDia,'D')) = CCON.PRIMER_DIA THEN
EXIT;
END IF;
v_siguienteDia := v_siguienteDia + 1;
END LOOP;
END IF;
END IF;

UPDATE SET_TPERIODOS_CONTRATOS
SET DDIA_GENERACION = v_siguienteDia,
DDIA_ANTERIOR = TRUNC(CCON.DIA_GENERACION)--TRUNC(SYSDATE) Modifcado VMRP 18/01/2006
WHERE NNO_CLIENTE = CCON.NCLIENTE;

COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('Cliente ->'||CCON.NCLIENTE||' error:'||SQLERRM);
END;

END LOOP;

/*EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('error:'||SQLERRM);*/
END Proc_Genera_Estado_Cuenta;
/

 
que nota por leon azul
Respuesta recibida el [05/11/2008 10:18:49]
  
este man me quiere sorprender











 
Que tiene este Mario M?? por xxx
Respuesta recibida el [18/12/2008 11:15:28]
Que le pasa al wey de Mario M??? Piensa que puede entrar a la pagina y llenarla de idioteces?? Si vas a utilizar este espacio que sea para poner cosas que ayuden a los demas, no para gastar recursos del servidor con código copiado y que no entiendes... LOOOOOOSER, aprende a mi que yo si aporto cosas interesantes. Alguna chica por aqui que quiera sexo conmigo??? :P


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

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial PL/SQL Cursores Explicitos en PL/SQLTutorial PL/SQLExcepciones en PL/SQL Versión para imprimir

Cursores de actualización en PL/SQL
Autor: Pedro Herrarte Sánchez
Visitas: 50434 Fecha de publicación: 01/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: 34 | Comentarios: 0 | Archivo: Articulos
Visitas: 108 | Comentarios: 0 | Archivo: Articulos
Visitas: 154 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 33 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS
Visitas: 285 | Comentarios: 1 | Archivo: Articulos
Categorias: Visual Basic .NET|C#
Visitas: 838 | Comentarios: 2 | Archivo: Articulos
Categorias: C#|ASP.NET|HTML DHTML|XML|JavaScript|ASP.NET|ASP|PHP|Visual Studio
Visitas: 711 | Comentarios: 1 | Archivo: Articulos
Categorias: Administración|Tutorial SQL
Visitas: 447 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 1051 | Comentarios: 1 | Archivo: Articulos
Categorias: ASP.NET|CSS|ASP.NET
Visitas: 250 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS

Útimos temas recibidos en los foros ...
FORMULARIO ACCESS por jcifuentes ... [Access] 11 29/05/2007
Ysmael por Ysmael ... [SQL] 0 08/01/2009
Reflection por Maurito22 ... [C#] 2 06/01/2009
Programador por Robert ... [ORACLE] 0 07/01/2009
como insertar registros en un formulario de visual basic.net desde la base de datos sql server por orlan ... [SQL Server] 8 09/06/2008
quierocodigo de autogenerado del seguro por edwin garcia ramirez ... [Visual Basic .NET] 0 07/01/2009
Video gratis sobre AJAX con ASP.NET por alexxe ... [ASP.NET] 1 06/01/2009
calcular saldo acumulativo por cben ... [SQL] 5 30/12/2008
comparar 2 campos de 2 tablas usando el like por nani ... [SQL Server] 1 06/01/2009
Apagar ordenador remoto en C# por victoryiyo ... [C#] 1 07/01/2009
numero de AUTOGENERADO IPSS por carlos ... [Visual Basic .NET] 5 30/10/2008
Como mandar mensaje a Celular por Pako ... [C#] 63 13/03/2007

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 ...
31/03/2006 Tipos de datos en PL/SQL    forma parte de...Tutorial PL/SQL
31/03/2006 Operadores en PL/SQL    forma parte de...Tutorial PL/SQL
08/03/2007 Cambiar el nombre del servidor SQL Server
03/10/2006 Ocultación de miembros    forma parte de...Tutorial C#
21/07/2006 Funciones integradas de PL/SQL    forma parte de...Tutorial PL/SQL
01/01/2006 Borrado de datos. DELETE    forma parte de...Tutorial SQL
10/10/2006 Como conectar a ORACLE con Java
14/07/2006 Tablas PL/SQL    forma parte de...Tutorial PL/SQL
24/05/2007 Tipos de datos en Transact SQL    forma parte de...Tutorial de Transact SQL
08/09/2007 Funciones en Transact SQL    forma parte de...Tutorial de Transact SQL

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]