Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Un SP utilizando IF???...complicado!!!

Estas en el tema de Un SP utilizando IF???...complicado!!! en el foro de SQL Server en Foros del Web. Hola a todos!!!...nuevamente por aqui...y nuevamente sufriendo con un Procedimiento almacenado...ya anteriormente me han ayudado...y aunque ya entiendo un poco mas como funcionan...sigo sin saber ...
  #1 (permalink)  
Antiguo 13/03/2007, 13:39
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 7 meses
Puntos: 0
Pregunta Un SP utilizando IF???...complicado!!!

Hola a todos!!!...nuevamente por aqui...y nuevamente sufriendo con un Procedimiento almacenado...ya anteriormente me han ayudado...y aunque ya entiendo un poco mas como funcionan...sigo sin saber como realizarlos...espero nuevamente me puedan ayudar!!!

Les explico: la idea es generar un SP que inserte datos en una tabla...la tabla se llama E1 que se encuentra en el servidor S1...lo complicado es insertar los datos correspondientes a Medida Y Linea, los cuales los debo de obtener de 2 formas:

1) primero debo comparar el dato de CODE de mi tabla E1 que se encuentra en el servidor S1 con CODE de mi tabla MSAP que se encuentra en el servidor S3 (dbo.E1.CODE = dbo.MSAP_1.CODE), y si el campo de COMUN en la tabla MSAP tiene el valor de "X" debo de insertar en mi tabla E1 el valor que corresponde al campo de MEDIDA y LINEA (segun la tabla de MSAP) que le corresponda.

2) si el primer punto no se cumple,entonces debe relacionar el dato IDETIQUETA de la tabla E1 que se encuentra en el servidor S1 con IDETIQUETA de la tabla RAST que se encuentra en el servidor S2 para posteriormente relacionar CCOMER de la tabla RAST que se encuentra en el servidor S2 con CCOMER de la tabla MSAP que se encuentra en el servidor S3 (ON RAST_1.CCOMER = MSAP_1.CCOMER ON dbo.E1.IDETIQUETA = RAST_1.IDETIQUETA ) para poder insertar en mi tabla E1 el valor que corresponde al campo de MEDIDA y LINEA (segun la tabla de MSAP) que le corresponda.

3) pero si no encuentra el IDETIQUETA de E1 en RAST, entonces MEDIDA y LINEA = NULL

Asi comencé...este es el codigo que llevo...pero no se como plasmar la idea de las condicionantes (IF)...

Código:
CREATE PROCEDURE sp_iTablaE1

--Primero declaramos las variables de entrada que seran las que reciban los parametros desde el exterior

@CODE CHAR(10),
@EQUIPMENT CHAR(10),
@SIDEWALL CHAR(10),
@WAREHOUSE INT(4),
@REJECT INT(4),
@WEIGHT FLOAT(8),
@IDETIQUETA CHAR(10)
AS

--Declaramos las variables que obtendremos de laconsulta

DECLARE @MEDIDA CHAR(30),
	@LINEA CHAR(30),
	@COMUN CHAR(10)

-- Insertamos los datos

insert into E1(CODE, EQUIPMENT, SIDEWALL, WAREHOUSE, REJECT, WEIGHT, IDETIQUETA)
values(@CODE, @EQUIPMENT, @SIDEWALL, @WAREHOUSE, @REJECT, @WEIGHT, @IDETIQUETA)

--Ya que tenemos el valor de CODE y IDETIQUETA: Igualamos el valor de CODE de la tabla E1(Servidor1) con el de CODE de la tabla MSAP(Servidor3) y si el campo COMUN de la tabla MSAP tine el valor de ¨x¨ jalamos los datos de los campos MEDIDA y LINEA correspondientes

IF ()

(
--Si no entonces igualamos IDETIQUETA de E1(Servidor1) con IDETIQUETA de la tabla de RAST, y de ahi igualamos el CCOMER de la tabla RAST(Servidor2) con CCOMER de la tabla MSAP(Servidor3) y jalamos los datos de los campos MEDIDA y LINEA correspondientes

IF ()

--Si no el valor para MEDIDA y LINEA = NULL
)
No se si vaya bien...espero me puedan ayudar y espero haberme explicado bien...gracias!!!
  #2 (permalink)  
Antiguo 13/03/2007, 13:58
Avatar de marcos_aliagac  
Fecha de Ingreso: marzo-2007
Mensajes: 3
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Un SP utilizando IF???...complicado!!!

no es muy clara lo que intentas, pero ?

quieres llevar datos de una tabla en un S1 a otros servidores ( o viceversa ), pues refieres a un S3.
  #3 (permalink)  
Antiguo 13/03/2007, 15:08
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 7 meses
Puntos: 0
Pregunta Re: Un SP utilizando IF???...complicado!!!

Hola marcos_aliagac!!!...creo que si esta un poco enredado...asi es que trataré de explicar el primer paso...

-Tengo 1 tabla llamada E1 que se encuentra en el servidor local E1, con los siguientes campos:
ID(id-numerico), CODE, MEDIDA,LINEA, EQUIPMENT, SIDEWALL, WAREHOUSE, REJECT, WEIGHT, IDETIQUETA y FECHA(getdate())

-Tengo 1 tabla llamda MSAP que se encuentra en el servidor remoto S3, con los siguientes campos:
CCOMER, CODE, MEDIDA, LINEA y COMUN

La tabla que debo alimentar es la E1:

De manera externa voy a obtener los siguientes datos:

CODE, EQUIPMENT, SIDEWALL, WAREHOUSE, REJECT, WEIGHT y IDETIQUETA, los cuales debo insertar a la tabla E1

Segun yo seria esta parte:

Código:
CREATE PROCEDURE sp_iTablaE1

--Primero declaramos las variables de entrada que seran las que reciban los parametros desde el exterior

@CODE CHAR(10),
@EQUIPMENT CHAR(10),
@SIDEWALL CHAR(10),
@WAREHOUSE INT(4),
@REJECT INT(4),
@WEIGHT FLOAT(8),
@IDETIQUETA CHAR(10)
AS

-- Insertamos los datos

insert into E1(CODE, EQUIPMENT, SIDEWALL, WAREHOUSE, REJECT, WEIGHT, IDETIQUETA)
values(@CODE, @EQUIPMENT, @SIDEWALL, @WAREHOUSE, @REJECT, @WEIGHT, @IDETIQUETA)
Pero los datos de MEDIDA y LINEA los debo de obtener de la tabla MSAP, y hay 3 casos: el primero seria el siguiente:

segun el dato de CODE que se inserte en E1 debo relacionarlo con el CODE que hay en MSAP...

Seria algo asi:
Código:
SELECT dbo.E1.CODE, dbo.MSAP_1.COMUN, dbo.MSAP.MEDIDA, dbo.MSAP.LINEA
FROM dbo.E1 INNER JOIN
         dbo.MSAP_1 ON dbo.E1.CODE = dbo.MSAP_1.CODE 
WHERE (dbo.E1.CODE=@CODE)
si lo encuentra y si el campo de COMUN= ´X´, deberá insertar a la tabla E1 el valor de MEDIDA y LINEA que le corresponda, pero si COMUN es diferente de 'X' seguria la otra condicion...ojala ya se entienda mejor!!!...sigo en espera!!!
  #4 (permalink)  
Antiguo 16/03/2007, 18:03
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 7 meses
Puntos: 0
Pregunta Re: Un SP utilizando IF???...paso x paso!!!

...sigo intentando realizar el SP...bueno pues esto es lo que llevo...es la primera parte pero no se si este bien...


Código:
CREATE PROCEDURE sp_iTablaE1

--Primero declaramos las variables de entrada que seran las que reciban 
los parametros desde el exterior

@CODE CHAR(10),
@EQUIPMENT CHAR(10),
@SIDEWALL CHAR(10),
@WAREHOUSE INT(4),
@REJECT INT(4),
@WEIGHT FLOAT(8),
@IDETIQUETA CHAR(10)
AS

DECLARE
@MEDIDA CHAR(35),
@LINEA CHAR(35),
@COMUN CHAR(10),


-- Insertamos los datos

insert into E1(CODE, EQUIPMENT, SIDEWALL, WAREHOUSE, REJECT, WEIGHT, IDETIQUETA)
values(@CODE, @EQUIPMENT, @SIDEWALL, @WAREHOUSE, @REJECT, @WEIGHT, @IDETIQUETA)

--Ya que conocemos el valor de CODE y IDETIQUETA realizamos la consulta

IF
SELECT dbo.E1.CODE, @COMUN=dbo.MSAP_1.COMUN, @MEDIDA=dbo.MSAP.MEDIDA, @LINEA=dbo.MSAP.LINEA
FROM dbo.E1 INNER JOIN
         dbo.MSAP_1 ON dbo.E1.CODE = dbo.MSAP_1.CODE 
WHERE (dbo.E1.CODE=@CODE)

--Si encuentra el valor de CODE y el campo de COMUN=´X´ se agrga el
valor de MEDIDA y LINEA que le hayan correspondido

IF 
@COMUN=´X´

insert into E1(MEDIDA, LINEA)
values(@MEDIDA, @LINEA)
  #5 (permalink)  
Antiguo 19/03/2007, 21:08
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Re: Un SP utilizando IF???...complicado!!!

IF
SELECT dbo.E1.CODE, @COMUN=dbo.MSAP_1.COMUN, @MEDIDA=dbo.MSAP.MEDIDA, @LINEA=dbo.MSAP.LINEA
FROM dbo.E1 INNER JOIN
dbo.MSAP_1 ON dbo.E1.CODE = dbo.MSAP_1.CODE
WHERE (dbo.E1.CODE=@CODE)

El IF inicial no es necesario, simplemente asigna las variables y en el segundo (que ahora sería el único) revisas el valor obtenido

Por el resto creo que vas muy bien.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:50.