Como hago para no usar un cursor en este caso.

26/06/2004 - 08:39 por Marcelo E Bruski | Informe spam
Hola amigos Listeros.

Tengo el siguiente codigo:

CREATE PROCEDURE Desa_Ppal AS
DECLARE

CREATE TABLE ##TEMP (OPERACION varchar(15),
IDPROPIEDAD varchar(8) primary key,
[Vigencia] [varchar] (15),
[FechaAlta] [varchar] (10),
[FechaModif] [varchar] (10),
[Nro] smallint,
[Antiguedad] int,
[Supcubierta] int ,
[SupDescubierta] int ,
[Zona] varchar(15),
[MONEDA] varchar (15),
[MONTO] INT,
[TIPOEDIFICIO] VARCHAR(15),
[ESTADO] VARCHAR(15)
)

set nocount on
EXEC DESA_ZONAS
exEC DESA_OPERACION
EXEC DESA_NRO
EXEC DESA_TIPO_MONEDAS
EXEC DESA_MONTO
EXEC DESA_TIPOEDIFICIO
EXEC DESA_ESTADO
SET NOCOUNT ON


INSERT INTO ##TEMP
SELECT ' ' as Operacion,
F_Cod_InmobiliariaArgenprop+RIGHT(IdPropiedad0,3) AS IDPROPIEDAD,
f_cod_vigencia,
cast(DATEPART(mm, T_Inmuebles.A_Fecha_ALTA )
as varchar(2))+ '/' +cast(DATEPART(dd,
T_Inmuebles.A_Fecha_ALTA )
as varchar(2))+ '/' +cast(DATEPART(yy,
T_Inmuebles.A_Fecha_Alta )
as varchar(4))AS FECHA_ALTA,
cast(DATEPART(mm, T_Inmuebles.A_Fecha_ultima_modificacion )
as varchar(2))+ '/' +cast(DATEPART(dd,
T_Inmuebles.A_Fecha_ultima_modificacion )
as varchar(2))+ '/' +cast(DATEPART(yy,
T_Inmuebles.A_Fecha_ultima_modificacion)
as varchar(4))AS FECHA_MODIFICA, ' ' as Nro, A_Antiguedad as
Antiguedad, A_Superficie_Cubierta,
A_Superficie_Descubierta, ' ' as Zona, ' ' AS MONEDA, ' ' AS MONTO, ' '
AS TIPOEDIFIC, ' ' AS ESTAD
FROM T_EQUIVALENCIAS_INMOBILIARIAS_ARGENPROP INNER JOIN
T_INMOBILIARIAS ON F_COD_INMOBILIARIA T_INMOBILIARIAS.P_COD_INMOBILIARIA
INNER JOIN T_SUCURSALES ON
T_INMOBILIARIAS.P_COD_INMOBILIARIA = T_SUCURSALES.P_COD_INMOBILIARIA
inner join t_sucursal_inmueble on t_sucursales.p_cod_inmobiliaria t_sucursal_inmueble.p_cod_inmobiliaria inner join
t_inmuebles on t_sucursal_inmueble.p_cod_inmueble t_inmuebles.p_cod_inmueble
inner join t_equivalencias_inmuebles_argenprop on
t_equivalencias_inmuebles_argenprop.f_cod_inmueble
= t_inmuebles.p_cod_inmueble
where (DATEPART(mm, T_Inmuebles.A_Fecha_ALTA)+
DATEPART(dd, T_Inmuebles.A_Fecha_ALTA)+
DATEPART(yy, T_Inmuebles.A_Fecha_ALTA)) datepart(mm,getdate())+
datepart(dd,getdate())+
datepart(yy,getdate())

UPDATE ##TEMP SET OPERACION = T_OPERACION FROM ##TEMP_ING_OPERACION
UPDATE ##TEMP SET ZONA =A_DESCRIPCION FROM ##TEMP_ING_ZONAS
UPDATE ##TEMP SET NRO = T_NRO FROM ##TEMP_ING_NRO
UPDATE ##TEMP SET MONEDA = T_MONEDAS FROM ##TEMP_ING_MONEDAS
UPDATE ##TEMP SET MONTO = T_MONTO FROM ##TEMP_ING_MONTO
UPDATE ##TEMP SET TIPOEDIFICIO = T_TIPO_EDIFICIO FROM
UPDATE ##TEMP SET ESTADO = T_ESTADO FROM ##TEMP_ING_ESTADO

DROP TABLE ##TEMP_ING_ZONAS
DROP TABLE ##TEMP_ING_OPERACION
DROP TABLE ##TEMP_ING_NRO
DROP TABLE ##TEMP_ING_MONEDAS
DROP TABLE ##TEMP_ING_MONTO
DROP TABLE ##TEMP_ING_TIPO_EDIFICIO
DROP TABLE ##TEMP_ING_ESTADO

Necesito en el update que me modifique todos los registros de la tabla. Con
el codigo que puse solo coloca el ultimo valor encontrado. Debiera de usar
un While pero no encuentro que condicion logica poner.

Alguien tiene alguna idea o sugerencia?? Saludos.
 

Leer las respuestas

#1 MAXI
26/06/2004 - 05:19 | Informe spam
Hola, francamente no entiendo bien que haces con el Update :( y porque
ademas haces tantos Updates y de donde salen todas esas tablas ##.

Me parece que si revisas bien la instruccion Update (Descripta) en tus BOL
veras unos ejemplos al final donde te daran una gran idea, o quizas si me
explicas a mi que queres hacer realmente quizas te pueda orientar mejor ;-)

Un saludo




Maxi

Buenos Aires - Argentina

Desarrollador .NET 3 Estrellas

Mail: Maxi_accotto[arroba]speedy.com.ar

MSN:


"Marcelo E Bruski" escribió en el mensaje
news:%
Hola amigos Listeros.

Tengo el siguiente codigo:

CREATE PROCEDURE Desa_Ppal AS
DECLARE

CREATE TABLE ##TEMP (OPERACION varchar(15),
IDPROPIEDAD varchar(8) primary key,
[Vigencia] [varchar] (15),
[FechaAlta] [varchar] (10),
[FechaModif] [varchar] (10),
[Nro] smallint,
[Antiguedad] int,
[Supcubierta] int ,
[SupDescubierta] int ,
[Zona] varchar(15),
[MONEDA] varchar (15),
[MONTO] INT,
[TIPOEDIFICIO] VARCHAR(15),
[ESTADO] VARCHAR(15)
)

set nocount on
EXEC DESA_ZONAS
exEC DESA_OPERACION
EXEC DESA_NRO
EXEC DESA_TIPO_MONEDAS
EXEC DESA_MONTO
EXEC DESA_TIPOEDIFICIO
EXEC DESA_ESTADO
SET NOCOUNT ON


INSERT INTO ##TEMP
SELECT ' ' as Operacion,
F_Cod_InmobiliariaArgenprop+RIGHT(IdPropiedad0,3) AS IDPROPIEDAD,
f_cod_vigencia,
cast(DATEPART(mm, T_Inmuebles.A_Fecha_ALTA )
as varchar(2))+ '/' +cast(DATEPART(dd,
T_Inmuebles.A_Fecha_ALTA )
as varchar(2))+ '/' +cast(DATEPART(yy,
T_Inmuebles.A_Fecha_Alta )
as varchar(4))AS FECHA_ALTA,
cast(DATEPART(mm, T_Inmuebles.A_Fecha_ultima_modificacion )
as varchar(2))+ '/' +cast(DATEPART(dd,
T_Inmuebles.A_Fecha_ultima_modificacion )
as varchar(2))+ '/' +cast(DATEPART(yy,
T_Inmuebles.A_Fecha_ultima_modificacion)
as varchar(4))AS FECHA_MODIFICA, ' ' as Nro, A_Antiguedad as
Antiguedad, A_Superficie_Cubierta,
A_Superficie_Descubierta, ' ' as Zona, ' ' AS MONEDA, ' ' AS MONTO, ' '
AS TIPOEDIFIC, ' ' AS ESTAD
FROM T_EQUIVALENCIAS_INMOBILIARIAS_ARGENPROP INNER JOIN
T_INMOBILIARIAS ON F_COD_INMOBILIARIA > T_INMOBILIARIAS.P_COD_INMOBILIARIA
INNER JOIN T_SUCURSALES ON
T_INMOBILIARIAS.P_COD_INMOBILIARIA = T_SUCURSALES.P_COD_INMOBILIARIA
inner join t_sucursal_inmueble on t_sucursales.p_cod_inmobiliaria > t_sucursal_inmueble.p_cod_inmobiliaria inner join
t_inmuebles on t_sucursal_inmueble.p_cod_inmueble > t_inmuebles.p_cod_inmueble
inner join t_equivalencias_inmuebles_argenprop on
t_equivalencias_inmuebles_argenprop.f_cod_inmueble
= t_inmuebles.p_cod_inmueble
where (DATEPART(mm, T_Inmuebles.A_Fecha_ALTA)+
DATEPART(dd, T_Inmuebles.A_Fecha_ALTA)+
DATEPART(yy, T_Inmuebles.A_Fecha_ALTA)) > datepart(mm,getdate())+
datepart(dd,getdate())+
datepart(yy,getdate())

UPDATE ##TEMP SET OPERACION = T_OPERACION FROM ##TEMP_ING_OPERACION
UPDATE ##TEMP SET ZONA =A_DESCRIPCION FROM ##TEMP_ING_ZONAS
UPDATE ##TEMP SET NRO = T_NRO FROM ##TEMP_ING_NRO
UPDATE ##TEMP SET MONEDA = T_MONEDAS FROM ##TEMP_ING_MONEDAS
UPDATE ##TEMP SET MONTO = T_MONTO FROM ##TEMP_ING_MONTO
UPDATE ##TEMP SET TIPOEDIFICIO = T_TIPO_EDIFICIO FROM
UPDATE ##TEMP SET ESTADO = T_ESTADO FROM ##TEMP_ING_ESTADO

DROP TABLE ##TEMP_ING_ZONAS
DROP TABLE ##TEMP_ING_OPERACION
DROP TABLE ##TEMP_ING_NRO
DROP TABLE ##TEMP_ING_MONEDAS
DROP TABLE ##TEMP_ING_MONTO
DROP TABLE ##TEMP_ING_TIPO_EDIFICIO
DROP TABLE ##TEMP_ING_ESTADO

Necesito en el update que me modifique todos los registros de la tabla.


Con
el codigo que puse solo coloca el ultimo valor encontrado. Debiera de usar
un While pero no encuentro que condicion logica poner.

Alguien tiene alguna idea o sugerencia?? Saludos.


Preguntas similares