Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Créer dynamiquement une table temporaire basée sur le jeu de résultats de SP

Réponse courte :non, vous ne pouvez pas faire cela.

Vous devez pré-déclarer votre table temporaire avec le nombre exact de colonnes qui seront renvoyées par la procédure stockée.

La solution consiste à utiliser des tables persistantes. Par exemple, vous pourriez avoir une table permanente dans votre base de données appelée someSPResults. Chaque fois que someSP est modifié pour avoir un nombre différent de colonnes de sortie, modifiez le format de someSPResults dans le cadre du déploiement.

Ensuite, vous pouvez faire ceci :

insert into dbo.someSPresults
exec someSP

Ou à l'intérieur de someSP, vous pouvez insérer les résultats directement dans la table someSPresults comme une partie normale de l'exécution. Vous devez juste vous assurer d'identifier exactement quels enregistrements de la table someSPresults proviennent de chaque exécution de someSP, car ce proc stocké pourrait être déclenché plusieurs fois simultanément, déversant ainsi beaucoup de données dans someSPresults.