Ver Mensaje Individual
  #22 (permalink)  
Antiguo 25/01/2006, 02:31
Avatar de Bravenap
Bravenap
 
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años, 4 meses
Puntos: 4
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."
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!