SQL Server - ayuda de memoria

   
Vista:

ayuda de memoria

Publicado por Pablo Palacios (31 intervenciones) el 16/03/2009 23:27:47
Hola mi nombre es Pablo soy de Chile y estoy muy desactualizado con SQL lo estudié en la Universidad y ya ha pasado mucho tiempo además nunca lo utilicé ya que me dedique a otra área… ahora estoy en problemas ya que no recuerdo bien las instrucciones he puesto un procedimiento donde explico -según yo- lo que entiendo de cada instrucción lo hago con ...(bla bla) ó ...(?) si no entendí nada
por favor solo díganme si estoy errado en lo que he puesto. Para mí basta con un si o no bueno y si pueden me tiran alguna ayudita mejor, el problema es que no tengo mucho tiempo para estudiar debo aplicar now...de ante mano muchas gracias...

set ANSI_NULLS ON ...(?)
set QUOTED_IDENTIFIER ON...(?)
go ...(?)

ALTER PROCEDURE [dbo].[CARGA_DATOS_VF_CHILE] ...(Nombre del procedimiento)
(
@NOMINA CHAR(25) ...(Variable externa caracter pasada por parámetro de largo 25...?)
)
AS ...(?)
SET NOCOUNT ON ...(?)
DECLARE @N_COBRANZA INT ...(Declaración de variable local)
DECLARE @N_CARGA INT ...(Declaración de variable local)
DECLARE @RUT_CLIENTE INT ...(Declaración de variable local)
DECLARE @DV_CLIENTE CHAR(1) ...(Declaración de variable local)
DECLARE @RUT_CLIENTE2 INT ...(Declaración de variable local)
DECLARE @DV_CLIENTE2 CHAR(1) ...(Declaración de variable local)
DECLARE @CLIENTE_2_RS CHAR(60) ...(Declaración de variable local)
DECLARE @RUT_DEUDOR INT ...(Declaración de variable local)
DECLARE @DV_DEUDOR CHAR(1) ...(Declaración de variable local)
DECLARE @NOMBRE_DEUDOR CHAR(80) ...(Declaración de variable local)
DECLARE @DIRECCION_DEUDOR CHAR(50) ...(Declaración de variable local)
DECLARE @COMUNA_DEUDOR CHAR(30) ...(Declaración de variable local)
DECLARE @CIUDAD_DEUDOR CHAR(30) ...(Declaración de variable local)
DECLARE @FONO_DEUDOR CHAR(10) ...(Declaración de variable local)
DECLARE @TIPO_DOCUMENTO CHAR(4) ...(Declaración de variable local)
DECLARE @NUM_DOCUMENTO INT ...(Declaración de variable local)
DECLARE @MOTIVO CHAR(4) ...(Declaración de variable local)
DECLARE @FECHA_RECEPCION CHAR(10) ...(Declaración de variable local)
DECLARE @MONTO_DOCUMENTO MONEY ...(Declaración de variable local)
DECLARE @TIPO_MONEDA CHAR(4) ...(Declaración de variable local)
DECLARE @FECHA_DOCUMENTO CHAR(10) ...(Declaración de variable local)
DECLARE @BANCO INT ...(Declaración de variable local)
DECLARE @CTA_CTE CHAR(20) ...(Declaración de variable local)
DECLARE @FECHA_PROTESTO CHAR(10) ...(Declaración de variable local)
DECLARE @RUT_DEUDOR_LAST INT ...(Declaración de variable local)
DECLARE @VER BIT ...(Declaración de variable local)
DECLARE @VER2 BIT ...(Declaración de variable local)
DECLARE @VER22 INT ...(Declaración de variable local)
DECLARE @RUT_ACRREDOR2_LAST INT ...(Declaración de variable local)
DECLARE @ARCHIVO_CARGA CHAR(25) ...(Declaración de variable local)

DECLARE X_CURSOR CURSOR FOR ...(declaración de variable (x_cursor) para archivo ...?)

...(Aquí seleciona los campos del archivo SOINCO_REC y se relaciona o asiga con la variable o puntero X_Cursor ...? por eso se define cursor...?)

SELECT RUT_CLIENTE,DIG_CLIENTE,RUT_CLIENTE2,DIG_VER2,RAZ_SOC,RUT_DEUDOR,DIGDEUDOR,DIR_DEUDOR,RTRIM(LTRIM(NOM_DEUDOR)) + ' ' + RTRIM(LTRIM(APE_DEUDOR)),COMUNA_DEUDOR,CIUDAD_DEUDOR,SUBSTRING(RTRIM(LTRIM(FON_DEUDOR)),1,10),
TIP_DOCUME,NUM_DOCUME,DESC_CORTA,FEC_RECEPC,CAST(VAL_DOCUME AS MONEY) AS VAL_DOCUME,COD_MONEDA,FEC_DOCUME,COD_BANCO,NUM_CTACTE,FEC_PRO,NUM_FORM
FROM SOINCO_REC WHERE NUM_FORM = @NOMINA ORDER BY RUT_CLIENTE2,RUT_DEUDOR ASC

OPEN X_CURSOR ...(Apertura del archivo seleccionado)
FETCH NEXT FROM X_CURSOR ...(?)

...(Insertar los datos en el mismo orden según archivo seleccionado ...? lo voy a llamar "XX" para una pregunta posterior...)
INTO @RUT_CLIENTE,@DV_CLIENTE,@RUT_CLIENTE2,@DV_CLIENTE2,@CLIENTE_2_RS,@RUT_DEUDOR,@DV_DEUDOR,@DIRECCION_DEUDOR,@NOMBRE_DEUDOR,@COMUNA_DEUDOR,@CIUDAD_DEUDOR,@FONO_DEUDOR,@TIPO_DOCUMENTO,
@NUM_DOCUMENTO,@MOTIVO,@FECHA_RECEPCION,@MONTO_DOCUMENTO,@TIPO_MONEDA,@FECHA_DOCUMENTO,@BANCO,@CTA_CTE,@FECHA_PROTESTO,@ARCHIVO_CARGA

SELECT @N_CARGA=NUMERO_CARGA FROM _NUM_COBRANZA ...(?)
SELECT @N_COBRANZA=NUMERO FROM _NUM_COBRANZA ...(?)
SET @N_COBRANZA=@N_COBRANZA - 1 ...(modifica la variable @N_COBRANZA en -1 ...?)
SET @RUT_DEUDOR_LAST=0 ...(deja la variable @RUT_DEUDOR_LAST en 0 ...?)

WHILE @@FETCH_STATUS = 0 ...(Comienzo de bucle con variable @@FETCH_STATUS = 0 que segun creo es ponerla en el principio del archivo... como un "not eoF")
BEGIN

IF @RUT_DEUDOR<>@RUT_DEUDOR_LAST
BEGIN

UPDATE _NUM_COBRANZA SET NUMERO=@N_COBRANZA + 1 ...(actualizo _NUM_COBRANZA con el valor de NUMERO)
SELECT @N_COBRANZA=NUMERO FROM _NUM_COBRANZA ...(no entiendo la lógica)

...(Inserta un registro en el archivo _DOCUMENTOS con los valores de las variables cuyos valores ya han sido asignados anteriormente en "XX" )

INSERT INTO _DOCUMENTOS(NRO_COBRANZA,RUT_CLIENTE,DV_CLIENTE,RUT_CLIENTE2,DV_CLIENTE2,RUT_DEUDOR,DV_DEUDOR,DIRECCION,COMUNA,CIUDAD,
TELEFONO,TIP_DOCUME,NUM_DOCUME,MOTIVO,FECHA_RECEPCION,MONTO_DOCUMENTO,MONEDA,FECHA_DCMTO,BANCO,CUENTA_CORRIENTE,FECHA_PROTESTO,ESTADO_COBRANZA,FECHA_ESTADO,ARCHIVO_CARGA)
VALUES(@N_COBRANZA,@RUT_CLIENTE,@DV_CLIENTE,@RUT_CLIENTE2,@DV_CLIENTE2,@RUT_DEUDOR,@DV_DEUDOR,@DIRECCION_DEUDOR,@COMUNA_DEUDOR,@CIUDAD_DEUDOR,@FONO_DEUDOR,@TIPO_DOCUMENTO,
@NUM_DOCUMENTO,@MOTIVO,GETDATE(),@MONTO_DOCUMENTO,@TIPO_MONEDA,CONVERT(DATETIME,@FECHA_DOCUMENTO,105),@BANCO,@CTA_CTE,CONVERT(DATETIME,@FECHA_PROTESTO,105),'VIGSC',GETDATE(),@ARCHIVO_CARGA)

...(llaman a un procedimiento que ya esta creado y le pasan parámetros...?)
EXECUTE sp_INSERTA_DEUDOR_APP @RUT_DEUDOR,@DV_DEUDOR,@NOMBRE_DEUDOR,@FONO_DEUDOR,'','','','',@VER2
EXECUTE PROC_GRABA_DATOS_DEUDOR_APP @N_COBRANZA,@RUT_DEUDOR,@DIRECCION_DEUDOR,@COMUNA_DEUDOR,@CIUDAD_DEUDOR,'','',1,'',@VER

END

ELSE

BEGIN

...(si no existe el cliente lo inserta en la tabla de clientes2)
IF NOT EXISTS(SELECT RUT_CLIENTE FROM _CLIENTES2 WHERE RUT_CLIENTE=@RUT_CLIENTE2)
INSERT INTO _CLIENTES2(RUT_CLIENTE,DIG_VER,RAZON_SOCIAL) VALUES (@RUT_CLIENTE2,@DV_CLIENTE2,@CLIENTE_2_RS)

END

SET @RUT_DEUDOR_LAST=@RUT_DEUDOR ...(asigna el valor de @RUT_DEUDOR a @RUT_DEUDOR_LAST son variables locales no de archivo...)

...(aquí no entiendo la lógica..)

FETCH NEXT FROM X_CURSOR
INTO @RUT_CLIENTE,@DV_CLIENTE,@RUT_CLIENTE2,@DV_CLIENTE2,@CLIENTE_2_RS,@RUT_DEUDOR,@DV_DEUDOR,@DIRECCION_DEUDOR,@NOMBRE_DEUDOR,@COMUNA_DEUDOR,@CIUDAD_DEUDOR,@FONO_DEUDOR,@TIPO_DOCUMENTO,

@NUM_DOCUMENTO,@MOTIVO,@FECHA_RECEPCION,@MONTO_DOCUMENTO,@TIPO_MONEDA,@FECHA_DOCUMENTO,@BANCO,@CTA_CTE,@FECHA_PROTESTO,@ARCHIVO_CARGA

END

UPDATE _NUM_COBRANZA SET NUMERO=@N_COBRANZA + 1 ...(Actualizo campo _NUM_COBRANZA de archivo SOINCO_REC)

CLOSE X_CURSOR ...(esto es como cerrar el archivo SOINCO_REC ?...)
DEALLOCATE X_CURSOR ...(libera la variable ??)


Muchas gracias por su tiempo...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

RE:ayuda de memoria

Publicado por Isaias (3186 intervenciones) el 18/03/2009 20:41:48
Amigo Pablo

Los foros tienen como objetivo RESOLVER PROBLEMAS PUNTUALES, sobre SQL Server (en este caso).

Si uste desea SABER que significa cada instruccion, vaya a leer su ayuda en linea y busque cada una de las instrucciones en las cuales tiene dudas.

Aqui le dejo la liga:

http://msdn.microsoft.com/en-us/library/aa257103.aspx
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda de memoria

Publicado por Pablo Palacios (31 intervenciones) el 18/03/2009 22:27:30
La idea era ahorrar tiempo, gracias de todas maneras...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

RE:ayuda de memoria

Publicado por Isaias (3186 intervenciones) el 19/03/2009 05:55:38
Bueno, solo me resta decir que tengas suerte y que alguien que tenga la oportunidad te ayude.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda de memoria

Publicado por Mau (67 intervenciones) el 23/03/2009 20:03:39
Que tal Pablo, en realidad es mucho código y desconozco la lógica del mismo. Te puedo orientar acerca de los comentarios que pones.

Veo que casi todo ha quedado claro, excepto la parte de FETCH NEXT FROM X_CURSOR INTO

Bueno, esta instrucción se utiliza con dos fines: el primero que puedas avanzar hacia el siguiente registro del cursor, de ahí que esta instrucción normalmente se suele poner antes del WHILE para recorrer el cursor al primer registro. Y posteriormente dentro del WHILE para poder ir avanzando uno por uno.

Si además le apuntas variables (que también suele ser lo normal, no se me ocurre para que serviría un cursor sin apuntar a variables), éstas tomarán el valor del SELECT que hayas declarado en tu cursor para cada registro.

Del resto de tus comentarios creo que no te falló tanto la memoria, ja ja.

Saludos y suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda de memoria

Publicado por Pablo Palacios (31 intervenciones) el 23/03/2009 20:46:47
Te pasaste muchas gracias por contestarme, me quedó muy claro todo lo que me explicaste ya que en realidad era una de las partes que me complicaba...

Gracias nuevamente Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar