web-dev-qa-db-fra.com

Création d'une variable de table dans SQL Server 2008 R2

quelle est la variable de table? Et comment créer une variable de table (table virtuelle en mémoire) avec des colonnes correspondant au jeu de résultats de procédure stockée existant.

J'ai exécuté la procédure et après l'avoir exécutée, les noms de colonne me sont connus. Mais dois-je déclarer le même type de données des colonnes que dans la procédure stockée?

EDIT: j'ai essayé cela

DECLARE @Table TABLE( 
name varchar(30) NOT NULL, 
location varchar(30) NOT NULL 
); 

INSERT @Table 
SELECT name, location FROM 
Exec SPROC @param , @param
30
Pankaj

@tableName Les variables de table sont actives pendant la durée du script n’exécutant que c’est-à-dire qu’elles ne sont que des objets de niveau session.

Pour le tester, ouvrez deux fenêtres d'éditeur de requêtes sous SQL Server Management Studio et créez des variables de table portant le même nom mais des structures différentes. Vous aurez une idée. Le @tableName object est donc temporaire et utilisé pour le traitement interne des données et ne contribue pas à la structure même de la base de données.

Il existe un autre type d’objet de table qui peut être créé pour une utilisation temporaire. Elles sont #tableName objets déclarés comme des instructions de création similaires pour les tables physiques:

Create table #test (Id int, Name varchar(50))

Cet objet de table est créé et stocké dans une base de données temporaire. Contrairement au premier, cet objet est plus utile, peut stocker des données volumineuses et prend part aux transactions, etc. Ces tables sont actives jusqu'à ce que la connexion soit ouverte. Vous devez supprimer l'objet créé en suivant le script avant de le recréer.

IF OBJECT_ID('tempdb..#test') IS NOT NULL
  DROP TABLE #test 

J'espère que cela a du sens!

30
mangeshkt