Hola a todos:
Estoy intentando hacer un nuevo procedimiento almacenado, pero me está volviendo loco.
Si lo pruebo en el servidor local funciona de maravillas, pero cuando intento probarlo en el servidor web me muestra el siguiente mensaje:
El nombre de objeto 'eventos' no es válido
Aclaro que la tabla con el nombre 'eventos' existe.
Si lo hago de esta forma no funciona
Código:
CREATE PROCEDURE sst_search_events
(
@lengua varChar(1) = "S",
@area varChar(3) = "%",
@search varChar(250)
)
AS
SELECT TOP 6 '_events_view.asp?event=' + CAST(e.id_evento AS varchar(6)),
e.fecha,
e.titulo,
e.e_titulo,
e.p_titulo,
e.pais,
e.e_pais,
e.p_pais,
KEY_EVENTS.[RANK]
FROM eventos AS e INNER JOIN
CONTAINSTABLE(eventos, *, @search) AS KEY_EVENTS
ON e.id_evento = KEY_EVENTS.[KEY]
WHERE KEY_EVENTS.[RANK] > 10
AND e.area LIKE @area
AND e.lengua LIKE @lengua
UNION
SELECT TOP 6 '_events_detail.asp?det=' + CAST(d.id_evento_sub AS varchar(6)),
even.fecha,
d.titulo,
d.titulo,
d.titulo,
even.titulo,
even.e_titulo,
even.p_titulo,
KEY_EVENTS.[RANK]
FROM eventos_sub AS d INNER JOIN eventos AS even
ON d.id_evento_cab = even.id_evento INNER JOIN
CONTAINSTABLE(eventos_sub, *, @search) AS KEY_EVENTS
ON d.id_evento_sub = KEY_EVENTS.[KEY]
WHERE KEY_EVENTS.[RANK] > 10
AND d.lengua LIKE @lengua
ORDER BY [RANK] DESC
Pero si pruebo con esto funciona bien
Código:
CREATE PROCEDURE st_search_events_sub
(
@lengua varChar(1) = "S",
@area varChar(3) = "%",
@search varChar(250)
)
AS
EXECUTE('
SELECT TOP 6 e.id_evento, e.fecha, e.titulo, e.e_titulo, e.p_titulo, pais, e_pais, p_pais
FROM eventos AS e INNER JOIN
CONTAINSTABLE(eventos, *, '' ' + @search + ' '') AS KEY_EVENTS
ON e.id_evento = KEY_EVENTS.[KEY]
WHERE KEY_EVENTS.[RANK] > 10
AND e.area LIKE ''%' + @area + '%''
AND e.lengua LIKE ''%' + @lengua + '%''
ORDER BY KEY_EVENTS.[RANK] DESC, fecha DESC
')
¿Qué puede estar pasando, que hago mal?