Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/01/2006, 07:54
Avatar de PMP
PMP
 
Fecha de Ingreso: febrero-2003
Ubicación: Chacabuco - Buenos Aires
Mensajes: 214
Antigüedad: 22 años
Puntos: 1
Antes que nada perdón por mi ignorancia en el tema.
Así como lo hice funciona bien, pero no me gusta como queda.
Quisiera hacerlo mas sencillo, por ejemplo:

Tener que pasar el valor de 3 variables
@mbr_id
@table_mbr
@table_vip

De esta forma evito todos los "IF"



Código:
ALTER PROCEDURE st_miembros_visita
(
@mbr_id      int,
@lengua char(1) ='S'
)
AS
IF @lengua = 'S'
	BEGIN	
	SELECT TOP 1 mbr.nombre, mbr.pais, mbr.pais_cod, mbr.provincia, vip.id 
	FROM miembros AS mbr LEFT OUTER JOIN  s_top vip ON mbr.id_usuario = vip.id WHERE mbr.id_usuario = @mbr_id
	UPDATE miembros SET visitas = visitas + 1, ultima = GetDate()WHERE id_usuario = @mbr_id
	END
ELSE
	IF @lengua = 'E' 
		BEGIN	
		SELECT TOP 1 mbr.nombre, mbr.pais, mbr.pais_cod, mbr.provincia, vip.id 
		FROM e_miembros AS mbr LEFT OUTER JOIN  e_top vip ON mbr.id_usuario = vip.id WHERE mbr.id_usuario = @mbr_id
		UPDATE e_miembros SET visitas = visitas + 1, ultima = GetDate()WHERE id_usuario = @mbr_id	
		END
	ELSE
		IF @lengua = 'P' 
			BEGIN	
			SELECT TOP 1 mbr.nombre, mbr.pais, mbr.pais_cod, mbr.provincia, vip.id 
			FROM p_miembros AS mbr LEFT OUTER JOIN  p_top vip ON mbr.id_usuario = vip.id WHERE mbr.id_usuario = @mbr_id
			UPDATE p_miembros SET visitas = visitas + 1, ultima = GetDate()WHERE id_usuario = @mbr_id
			END

Set NoCount On
He intentado poner

Código:
ALTER PROCEDURE st_miembros_visita
(
@mbr_id      int,
@table_mbr varChar(10) = 'miembros',
@table_vip varChar(5) = 's_top'
)
AS
SELECT TOP 1 mbr.nombre, mbr.pais, mbr.pais_cod, mbr.provincia, vip.id 
FROM @table_mbr AS mbr LEFT OUTER JOIN @table_stop vip ON mbr.id_usuario .....
Pero me genera un error diciéndome que debo declarar "@table_mbr".


Tambien probé

Código:
ALTER PROCEDURE st_miembros_visita
(
@mbr_id      int,
@table_mbr varChar(10) = 'miembros',
@table_vip varChar(5) = 's_top'
)
AS
DECLARE @strSQL
SET @strSQL = ('SELECT TOP 1 mbr.nombre, .... FROM ' + @table_mbr + ' AS mbr LEFT OUTER JOIN ' + @table_stop + ' AS vip ON mbr.id_usuario .....

EXECUTE (@strSQL)
Pero no me muestra ningun resultado.

¿¿¿¿¿¿¿¿¿Cómo puedo ser tan burro???????????

Muchas gracias.

Última edición por PMP; 26/01/2006 a las 08:09