En passant des listes de paramètres à valeur de table dans les procédures stockées SQL
Le scénario de remplissage d'une table de base de données avec plusieurs éléments associés à un enregistrement spécifique est Un défi commun dans la manipulation des données. Alors que les approches traditionnelles impliquent de passer itérativement les valeurs de paramètres ou d'utiliser la manipulation de chaîne, une solution plus efficace est disponible. 2008 a introduit des paramètres à valeur de table, qui permettent de passer une collecte de données structurées en tant que paramètre à une procédure stockée. Cela élimine le besoin d'une manipulation de chaîne complexe ou d'une manipulation de paramètres itérative. ( @Reportid int, @Items en tant que liste d'élément - Type de table défini par l'utilisateur ) COMME COMMENCER Insérer dans ReportItem (reportId, itemid) Sélectionnez @ReportId, Identifiant De @items End
Type de table personnalisé pour la liste des éléments
Pour créer un type de table personnalisé pour la liste des éléments, exécutez l'instruction SQL suivante:
Créer un type Liste d'articles comme table ( Id int )
ALTER PROCEDURE AddItemsToReport ( @ReportId int, @Items AS ItemList -- User-defined table type ) AS BEGIN INSERT INTO ReportItem (ReportId, ItemId) SELECT @ReportId, Id FROM @Items ENDPassage paramètre de la table de table de C #
Dans votre code C #, créez une instance du type de table personnalisé:
var itemlist = new ItemList (); itemList.Rows.add (1); itemList.Rows.add (2); itemlist.rows.add (3);
CREATE TYPE ItemList AS TABLE ( Id int )
dbcommand.addinParameter (dbcommand, "items", dbtype.object, itemList) (dbcommand, "items", dbtype.object, itemlist) ;
avantages de la table Paramètres
ALTER PROCEDURE AddItemsToReport ( @ReportId int, @Items AS ItemList -- User-defined table type ) AS BEGIN INSERT INTO ReportItem (ReportId, ItemId) SELECT @ReportId, Id FROM @Items ENDAmélioration des performances en évitant plusieurs aller-retour dans la base de données.
Code simplifié en éliminant le besoin de manipulation de chaîne ou d'itération. en tapant fortement les données d'entrée.
ALTER PROCEDURE AddItemsToReport ( @ReportId int, @Items AS ItemList -- User-defined table type ) AS BEGIN INSERT INTO ReportItem (ReportId, ItemId) SELECT @ReportId, Id FROM @Items END
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3