Maison base de données tutoriel mysql Sql Server2005 利用XML一次更新多条记录

Sql Server2005 利用XML一次更新多条记录

Jun 07, 2016 pm 03:08 PM
sql xml 利用 更新

很久么写博客了,惭愧。今天终于搞定了很久以来一直郁闷的一个问题,写个日志备注下。 我想很多人都知道,在oracle里面,存储过程里面可以传入数组(如int[]),也就是说,可以传多条 记录 到数据,从而一起 更新 。减少数据库的请求次数。 但SqlServer呢?b

很久么写博客了,惭愧。今天终于搞定了很久以来一直郁闷的一个问题,写个日志备注下。
我想很多人都知道,在oracle里面,存储过程里面可以传入数组(如int[]),也就是说,可以传多条记录到数据,从而一起更新。减少数据库的请求次数。
但SqlServer呢?bulk Insert这个很多人都知道,我也知道,但可惜,我从来没用过,只有导数据的时候才会考虑,但导数据DTS不是更方便吗?
手头的一个项目,有几个功能,每次需要更新N(N记录,记录不多,但如果每次只更新一条,循环insert,那每个功能需要N次请求数据库,如果有1000个并发,那数据库除了做你这个事情,其他的活不用干了。所以,需要尽量减少数据库请求,做到一次更新所有的记录
幸好,SqlServer给我们提供了一个新功能,利用XML(2000好像是没有这个功能的)。
先来假定一个这样的需求:用户更新一个book,同时需要更新N个章节。
一般的思路是这样,先更新book,然后循环章节数,N次更新数据的章节表。大家可以看下这个性能。

那我们用XML试试

Sql Server2005 利用XML一次更新多条记录利用XML更新的存储过程

Create PROCEDURE UP_Book_Insert
(
    
@BookId        INT,
    
@ChapterXml    XML

AS
BEGIN
CREATE TABLE #table
(
    ChapterId        
INT,
    ChapterName        
VARCHAR(255),
    Price            
INT
);
INSERT #table
    
SELECT *
    
FROM   (
               
SELECT X.C.value('Id[1]''int'AS ChapterId,
                      X.C.value(
'Name[1]''varchar(255)'AS ChapterName,
                      X.C.value(
'Price[1]','int'AS Price
               
FROM   @ChapterXml.nodes('Chapter'AS X(C)    --注意:这里的X(C)命名空间是需要的
           ) t;    
    
INSERT INTO tbChapter(BookId,ChapterId,ChapterName,Price) 
    
SELECT @BookId,ChapterId,ChapterName,Price from #table;
END

其实,在存储过程里面可以把临时表去掉的。

然后我们执行下看看

Sql Server2005 利用XML一次更新多条记录执行存储过程

exec UP_Book_Insert 10000,'268第268章100273第273章100275第275章100'

怎么样?不错吧。只需要在存储过程里面对XML格式进行解析。

而在c#里面,XML格式可以传入DbType.String类型就可以了。

再写一个函数来生成XML格式的字符串

Sql Server2005 利用XML一次更新多条记录生成XML格式的函数

public static string FormatXmlInfo(ListChapterInfo> list)
        {
            
if (list==null||list.Count0)
            {
                
return String.Empty;
            }
            StringBuilder sb = new StringBuilder();
            
foreach (ChapterInfo info in list)
            {
                sb.AppendFormat("{0}{1}{2}", info.ChapterId, info.ChapterName, info.Price);
            }
            
return sb.ToString();
        }


 好了,完成了。

性能具体怎么样,还没进行测试,但肯定的一点是,比多次请求数据库,或者在存储过程里面循环分割字符串效率要高。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment réparer la mise à jour de Blizzard Battle.net bloquée à 45 % ? Comment réparer la mise à jour de Blizzard Battle.net bloquée à 45 % ? Mar 16, 2024 pm 06:52 PM

La mise à jour de Blizzard Battle.net reste bloquée à 45%, comment le résoudre ? Récemment, de nombreuses personnes ont été bloquées à la barre de progression de 45 % lors de la mise à jour du logiciel. Elles resteront toujours bloquées après plusieurs redémarrages. Alors, comment résoudre cette situation ? Nous pouvons réinstaller le client, changer de région et supprimer des fichiers. ce didacticiel logiciel partagera les étapes de fonctionnement, dans l'espoir d'aider plus de personnes. La mise à jour de Blizzard Battle.net reste bloquée à 45 %, comment résoudre ce problème ? 1. Client 1. Tout d'abord, vous devez confirmer que votre client est la version officielle téléchargée depuis le site officiel. 2. Sinon, les utilisateurs peuvent accéder au site Web du serveur asiatique pour télécharger. 3. Après avoir entré, cliquez sur Télécharger dans le coin supérieur droit. Remarque : veillez à ne pas sélectionner le chinois simplifié lors de l'installation.

Quelle est la différence entre HQL et SQL dans le framework Hibernate ? Quelle est la différence entre HQL et SQL dans le framework Hibernate ? Apr 17, 2024 pm 02:57 PM

HQL et SQL sont comparés dans le framework Hibernate : HQL (1. Syntaxe orientée objet, 2. Requêtes indépendantes de la base de données, 3. Sécurité des types), tandis que SQL exploite directement la base de données (1. Normes indépendantes de la base de données, 2. Exécutable complexe requêtes et manipulation de données).

Utilisation de l'opération de division dans Oracle SQL Utilisation de l'opération de division dans Oracle SQL Mar 10, 2024 pm 03:06 PM

"Utilisation de l'opération de division dans OracleSQL" Dans OracleSQL, l'opération de division est l'une des opérations mathématiques courantes. Lors de l'interrogation et du traitement des données, les opérations de division peuvent nous aider à calculer le rapport entre les champs ou à dériver la relation logique entre des valeurs spécifiques. Cet article présentera l'utilisation de l'opération de division dans OracleSQL et fournira des exemples de code spécifiques. 1. Deux méthodes d'opérations de division dans OracleSQL Dans OracleSQL, les opérations de division peuvent être effectuées de deux manières différentes.

Comparaison et différences de syntaxe SQL entre Oracle et DB2 Comparaison et différences de syntaxe SQL entre Oracle et DB2 Mar 11, 2024 pm 12:09 PM

Oracle et DB2 sont deux systèmes de gestion de bases de données relationnelles couramment utilisés, chacun possédant sa propre syntaxe et ses propres caractéristiques SQL. Cet article comparera et différera la syntaxe SQL d'Oracle et de DB2, et fournira des exemples de code spécifiques. Connexion à la base de données Dans Oracle, utilisez l'instruction suivante pour vous connecter à la base de données : CONNECTusername/password@database Dans DB2, l'instruction pour vous connecter à la base de données est la suivante : CONNECTTOdataba.

Comment installer Angular sur Ubuntu 24.04 Comment installer Angular sur Ubuntu 24.04 Mar 23, 2024 pm 12:20 PM

Angular.js est une plateforme JavaScript librement accessible pour créer des applications dynamiques. Il vous permet d'exprimer rapidement et clairement divers aspects de votre application en étendant la syntaxe HTML en tant que langage de modèle. Angular.js fournit une gamme d'outils pour vous aider à écrire, mettre à jour et tester votre code. De plus, il offre de nombreuses fonctionnalités telles que le routage et la gestion des formulaires. Ce guide expliquera comment installer Angular sur Ubuntu24. Tout d’abord, vous devez installer Node.js. Node.js est un environnement d'exécution JavaScript basé sur le moteur ChromeV8 qui vous permet d'exécuter du code JavaScript côté serveur. Être à Ub

Windows ne peut pas accéder au périphérique, au chemin ou au fichier spécifié Windows ne peut pas accéder au périphérique, au chemin ou au fichier spécifié Jun 18, 2024 pm 04:49 PM

L'ordinateur d'un ami présente un tel défaut. Lors de l'ouverture de "Ce PC" et du fichier du lecteur C, il affichera "Explorer.EXE Windows ne peut pas accéder au périphérique, au chemin ou au fichier spécifié. Vous ne disposez peut-être pas des autorisations appropriées pour accéder au projet. " Y compris les dossiers, fichiers, cet ordinateur, la corbeille, etc., un double-clic fera apparaître une telle fenêtre, et un clic droit pour l'ouvrir est normal. Ceci est dû à une mise à jour du système. Si vous rencontrez également cette situation, l'éditeur ci-dessous vous apprendra comment la résoudre. 1. Ouvrez l'éditeur de registre Win+R et entrez regedit, ou cliquez avec le bouton droit sur le menu Démarrer pour exécuter et entrez regedit. 2. Localisez le registre « Computer\HKEY_CLASSES_ROOT\PackagedCom\ClassInd » ;

Windows suspend définitivement les mises à jour, Windows désactive les mises à jour automatiques Windows suspend définitivement les mises à jour, Windows désactive les mises à jour automatiques Jun 18, 2024 pm 07:04 PM

Les mises à jour Windows peuvent provoquer certains des problèmes suivants : 1. Problèmes de compatibilité : certaines applications, pilotes ou périphériques matériels peuvent être incompatibles avec les nouvelles mises à jour Windows, ce qui entraîne un dysfonctionnement ou un blocage. 2. Problèmes de performances : Parfois, les mises à jour de Windows peuvent ralentir le système ou subir une dégradation des performances. Cela peut être dû à de nouvelles fonctionnalités ou à des améliorations nécessitant davantage de ressources pour fonctionner. 3. Problèmes de stabilité du système : certains utilisateurs ont signalé qu'après l'installation des mises à jour Windows, le système pouvait rencontrer des pannes inattendues ou des erreurs d'écran bleu. 4. Perte de données : Dans de rares cas, les mises à jour Windows peuvent entraîner une perte de données ou une corruption de fichiers. C'est pourquoi avant d'effectuer des mises à jour importantes, sauvegardez votre

Comment mettre à jour le pilote de la carte graphique MSI ? Étapes de téléchargement et d'installation du pilote de la carte graphique MSI Comment mettre à jour le pilote de la carte graphique MSI ? Étapes de téléchargement et d'installation du pilote de la carte graphique MSI Mar 13, 2024 pm 08:49 PM

Les cartes graphiques MSI sont la marque de cartes graphiques la plus répandue sur le marché. Nous savons que les cartes graphiques doivent installer des pilotes pour obtenir des performances et garantir la compatibilité. Alors comment mettre à jour le pilote de la carte graphique MSI vers la dernière version ? Généralement, les pilotes de carte graphique MSI peuvent être téléchargés et installés à partir du site officiel. Découvrons-en plus ci-dessous. Méthode de mise à jour du pilote de la carte graphique : 1. Tout d'abord, nous entrons sur le « site officiel de MSI ». 2. Après avoir entré, cliquez sur le bouton « Rechercher » dans le coin supérieur droit et entrez le modèle de votre carte graphique. 3. Recherchez ensuite la carte graphique correspondante et cliquez sur la page de détails. 4. Entrez ensuite l'option « Support technique » ci-dessus. 5.Enfin, allez dans « Pilote et téléchargement »

See all articles