2010-11-26 2 views

Répondre

1

Paramètres table Valued sont une bonne option, personnellement, je préfère créer une table temporaire dans la procédure d'appel stocké et lu à partir de la table temporaire dans la procédure appelée.

donc dans le code qui serait:

CREATE PROC DoStuff 
AS BEGIN 
    CREATE TABLE #tobeinserted (Data1 INT, Data2 INT...) 
    EXEC InsertRows 
END 

CREATE PROC InsertRows 
AS BEGIN 
    INSERT INTO Table1 SELECT * FROM #tobeinserted 
END 

Cela fonctionne de manière fiable, car les tables temporaires ont une durée de vie jusqu'à ce que la procédure stockée dans laquelle ils sont créés sorties. Un avantage de cette méthode est que les tables temporaires, contrairement aux paramètres de valeur de table, peuvent avoir des index (en grappe) définis, de sorte que les recherches dans ces tables peuvent être très rapides. Un inconvénient est que vous ne pouvez pas exécuter deux instances du SP simultanément.