Ver Mensaje Individual
  #11 (permalink)  
Antiguo 18/01/2006, 09:32
Avatar de Bravenap
Bravenap
 
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años, 2 meses
Puntos: 4
SQL me mata. Perdonad por tener varios frentes abiertos. Esto es lo que he hecho. Trabaajo con una .adp de Access sonbre SQL.

Código:
ALTER PROCEDURE PA_SubirJerarquia
(@id int)
AS
BEGIN
	DECLARE @IDPadre int
	DECLARE @Nombre char(250)
	DECLARE @tabla TABLE (ColID int, ColNombre char(250))
	SET @IDPadre = (SELECT ID FROM clasificaciones WHERE ID = (SELECT ID FROM FN_IDPadre(@id)))
	SET @Nombre = (SELECT Nombre FROM clasificaciones WHERE ID = (SELECT ID FROM FN_IDPadre(@id)))
	INSERT INTO @tabla VALUES (@IDPadre, @Nombre) 
	IF @Nombre IS NULL
		SELECT 'No hay registros'
	ELSE
		SELECT * FROM @tabla
END
Y la función FN_IDPadre es:
Código:
ALTER FUNCTION dbo.FN_IDPadre
(@id int)
RETURNS TABLE
AS
RETURN (SELECT ID FROM clasificaciones WHERE ID = (SELECT IDPadre FROM clasificaciones WHERE ID = @id) )
Sería más fácil con una función escalar pero no me sale. Bueno, el caso es que cuando ejecuto el procedimiento y de parámetro le paso el 8 me dice que se ha ejecutado todo bien pero que no se devuelven resultados (ojo, el condicional no se llega a ejecutar). Sin embargo, con el siguiente código sin procedimientos almacenados sí me devuelve un registro correctamente:
Código:
DECLARE @Nombre char(250)
SET @Nombre =(SELECT Nombre FROM clasificaciones WHERE ID = (SELECT ID FROM FN_IDPadre(8)))
IF @Nombre IS NULL
SELECT 'No pertenece a ningún grupo superior' AS "Nombre"
ELSE
SELECT @Nombre AS "Nombre"
¿no se supone que es lo mismo?
__________________
¡¡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!