Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-05-2008
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
PL/SQL - Stored proc y Cursor

Como este es un foro de varios, entonces pongo mi duda aca. Necesito hacer una SP(Estoy estudiando PL/SQL) con un cursor que haga el seguinte: Cambiar todos los codigos de mitabla, pues todos los codigos estan igual a uno(1) y necesito hacer que los codigos queden:1,2,3,4 y 5. Son 5 registros en mi tabla solamente. Mi tabla estas asi:
Cita:
1 Jose
1 Maria
1 Pedro
1 Mara
1 João
y deberia quedar asi despues de la SP
Cita:
1 Jose
2 Maria
3 Pedro
4 Mara
5 João
Esto es un ejercicio. Mi SP estas abajo

Código Delphi [-]
CREATE OR REPLACE PROCEDURE ATUALIZA_PROD 
AS 
N_COD INTEGER; 

CURSOR CUR_ATU 
IS 
SELECT CODPROD FROM TB_PC_PRODUTO; 

BEGIN 

OPEN CUR_ATU; 
LOOP 
FETCH CUR_ATU INTO N_COD; 

UPDATE TB_PC_PRODUTO 
SET CODPROD = N_COD 
WHERE CODPROD = 1; 

N_COD := N_COD+1; 
EXIT WHEN N_COD = 6; 
END LOOP; 
END ATUALIZA_PROD; 
/
Responder Con Cita
  #2  
Antiguo 29-05-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por Paulao Ver Mensaje

OPEN CUR_ATU;
LOOP
FETCH CUR_ATU INTO N_COD;

UPDATE TB_PC_PRODUTO
SET CODPROD = N_COD
WHERE CODPROD = 1;

N_COD := N_COD+1;
EXIT WHEN N_COD = 6;
END LOOP;

Al final las claves quedarán con el último N_COD calculado.

La lógica es correcta, pero debido a que en la tabla las claves están de un principio repetidas, deberás obtener del cursor además del código el nombre para hacer la actualización de la siguiente manera:


Código SQL [-]
UPDATE TB_PC_PRODUTO 
SET CODPROD = ContCalc 
WHERE CODPROD = N_COD And NomProd =  N_NomProd;

Donde ContCal es un contador independiente que inicia en uno y ternina en N +1

Saludos
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 29-05-2008
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Poliburro, muchas gracias mismo. Esto es que yo queriba. Gracias!!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con Stored Proc (parámetros?) peccatum SQL 8 02-11-2007 17:44:07
stored proc ADO scooterjgm Conexión con bases de datos 1 09-09-2004 18:03:55
crear cursor en stored procedure al estilo de sqlserver Nose Firebird e Interbase 4 10-05-2004 18:07:32
Conexión a DB con Proc. Almacenados crasv Firebird e Interbase 9 15-02-2004 19:00:16
Conexión a DB con Proc. Almacenadosdo crasv Conexión con bases de datos 1 06-02-2004 10:00:19


La franja horaria es GMT +2. Ahora son las 12:10:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi