Devolver un solo conjunto de resultados

12/06/2006 - 19:40 por Raipon | Informe spam
Hola, tengo el siguiente procedimiento almacenado :

ALTER PROCEDURE [dbo].[sp_Dies_de_baixa]

As

SET NOCOUNT ON

DECLARE @Camps NVarChar (2000)
DECLARE @PIVOT NVarChar (1500)
DECLARE @Exercici int
DECLARE Baixes_Cursor CURSOR FOR

SELECT Year(Data) AS Exercici
FROM (DetallsHoraris INNER JOIN TítolHoraris ON
DetallsHoraris.IdTítolHorari = TítolHoraris.IdTítolHoraris) INNER JOIN
Empleats ON TítolHoraris.IdEmpleat = Empleats.IdEmpleat
Where Estat = 0
GROUP BY Year(Data)

OPEN Baixes_Cursor;

FETCH FROM Baixes_Cursor
Into @Exercici
Set @Camps = '['+ Convert(NVarchar, @Exercici) + '] As Exercici_' +
Convert(NVarchar, @Exercici)
Set @Pivot = '['+ Convert(NVarchar, @Exercici) + ']'

FETCH NEXT FROM Baixes_Cursor;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH FROM Baixes_Cursor
Into @Exercici
Set @Camps = @Camps + ', ['+ Convert(NVarchar, @Exercici) + '] As
Exercici_' + Convert(NVarchar, @Exercici)
Set @Pivot = @Pivot + ', ['+ Convert(NVarchar, @Exercici) + ']'
END;

CLOSE Baixes_Cursor;
DEALLOCATE Baixes_Cursor;

Execute (N'SELECT Nom, ' + @Camps +
' FROM
(SELECT Nom, Year(Data) AS Exercici
FROM (DetallsHoraris INNER JOIN TítolHoraris ON
DetallsHoraris.IdTítolHorari = TítolHoraris.IdTítolHoraris) INNER JOIN
Empleats ON TítolHoraris.IdEmpleat = Empleats.IdEmpleat Where Estat = 0) p
PIVOT
(
COUNT (Exercici)
FOR Exercici IN
( ' + @Pivot + ' )
) AS pvt
ORDER BY Nom'
)

El objetivo es obtener, de forma análoga a las consultas de referencias
cruzadas de Access un listado con un número variable de columnas, en este
caso, una por año. El problema, y perdón si es algo trivial, es que este
procedimiento me devuelve dos conjuntos de resultados : El primero : Exercici
= Null, y el segundo son los resultados de Execute. Y yo necesito que sólo me
devuelva los resultados del Execute. ¿ Cómo puedo hacerlo ?

Gracias por la atención.

Preguntas similare

Leer las respuestas

#1 Ele
13/06/2006 - 01:06 | Informe spam
Hola el 08 de junio 2006 marco anuncio el post consulta de referencias
cruzadas quiza es es lo que estas buscando por lo que entiendo a tu problema

"Raipon" escribió en el mensaje
news:
Mostrar la cita
#2 Raipon
13/06/2006 - 10:23 | Informe spam
Hola, muchas gracias por responder. Interesante el link que me comentas. De
nuevo gracias.
Aun y así, persiste mi duda : En el caso de que un store procedure devuelva
más de un conjunto de resultados, siendo necesario pasar una variable de un
lote de instrucciones a otro (por lo que no puedo usar 'Go'), ... ¿ puedo
forzar a que se devuelva solo el último conjunto de resultados ?

"Ele" wrote:

Mostrar la cita
#3 qwalgrande
14/06/2006 - 07:40 | Informe spam
Hola.

Para conseguirlo, no devuelvas más de un recordset en tu procedimiento.
Puedes asignar a variables (que no uses) los valores o simplemente evitar
lanzar esas consultas que no vas a recoger después.

Alberto López Grande (qwalgrande)


"Raipon" escribió en el mensaje
news:
Mostrar la cita
#4 Ele
14/06/2006 - 16:40 | Informe spam
Tal como te dice Alberto te devuelve lo que tiene el resultado del query ya
hiciste una prueba por aparte con ese select cuantos registros devuelve?

"Raipon" escribió en el mensaje
news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida