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.