Mithrandir, entiendo que es preferible no usar cursores pero entonces ¿cómo se recorren las filas de una consulta para ir concactenando valores?
Entiendo, por lo que me comentas, que debería ser algo así:
Código:
ALTER FUNCTION dbo.FN_BuscaSinonimos2
(@id int)
RETURNS varchar(500)
AS
BEGIN
DECLARE @retorno varchar(500)
SET @retorno = ''
IF EXISTS (SELECT Nombre FROM clasificaciones WHERE SinonimoDe = @id)
BEGIN
IF @retorno = ''
BEGIN
SELECT @retorno = RTRIM(@retorno) +'= '+Nombre
END
ELSE
BEGIN
SELECT @retorno = RTRIM(@retorno) + ', = ' + Nombre
END
END
RETURN @retorno
END
el nombre de la columna 'Nombre' no es válido. Y si pongo algo así:
Código:
ALTER FUNCTION dbo.FN_BuscaSinonimos2
(@id int)
RETURNS varchar(500)
AS
BEGIN
DECLARE @retorno varchar(500), @NombreSin char(250)
SET @retorno = ''
IF EXISTS (SELECT Nombre FROM clasificaciones WHERE SinonimoDe = @id)
BEGIN
SELECT @NombreSin = (SELECT Nombre FROM clasificaciones WHERE SinonimoDe = @id)
IF @retorno = ''
BEGIN
SELECT @retorno = RTRIM(@retorno) +'= '+ RTRIM(@NombreSin)
END
ELSE
BEGIN
SELECT @retorno = RTRIM(@retorno) + ', = ' + RTRIM(@NombreSin)
END
END
RETURN @retorno
END
"La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión."