Je dois stocker le jeu de résultats d'une procédure stockée dans une table temporaire (à l'aide de SQL Server 2000). D'après ce que j'ai lu, ce (mal construit par exemple) devrait fonctionner:Comment enregistrer un ensemble de résultats unique dans une table temporaire à partir d'une procédure stockée SQL renvoyant plusieurs ensembles?
create table #tempTable (TempId int primary key, Column1 varchar(100),
Column2 varchar(100), DateCreated datetime)
insert into #tempTable (TempId, Column1, Column2, DateCreated)
exec sproc_Select_Stuff_By_DateCreated @Date1 = '1/1/2009', @Date2 = '1/2/2009'
mais je reçois: « Insérer Erreur: Nom de la colonne ou le nombre de valeurs fournies ne correspond pas à la définition de la table. »
examen de la procédure (que je ne peux pas modifier) révèle ceci:
CREATE PROCEDURE sproc_Select_Stuff_By_DateCreated
@Date1 datetime,
@Date2 datetime
AS
BEGIN
SELECT TempId, Column1, Column2, DateCreated
FROM ReallyHugeMessOfJoinsAndCalculatedColumns
WHERE DateCreated between @Date1 and @Date2
SELECT @Date1 as Date1, @Date2 as Date2
END
Il est donc écho en fait revenir les paramètres passés dans comme un second jeu de résultats. (Je ne sais pas pourquoi, j'imagine que tout ce qui appelle la procédure sait quelles données elle transmet.)
Mes tests me portent à penser que le second jeu de résultats est à l'origine de l'échec de l'insertion - comme SQL essaie d'unir les ensembles de résultats ensemble et échoue.
J'ai seulement besoin du premier jeu de résultats sauvegardé dans ma table temporaire. Comment puis je faire ça?
Modifier
Merci de remarquer proecedures stockées CLR, mais cette fonctionnalité a été introduite dans SQL 2005 - il ne fonctionnera pas pour 2000. (Mais je n'avait pas connaissance d'entre eux, et ils regardent comme ils seront utiles lorsque nous mettrons à niveau.)
Comme les seules autres réponses semblent être "vous ne pouvez pas" - je suppose que c'est de retour à la planche à dessin pour moi.
peut vous envoyer des résultats de la procédure stockée? –
Voir cette question connexe: –
Brannon
Cette question a une solution de contournement en utilisant le CLR –