CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
Bài blog CFSDN này Sqlserver 2005 sử dụng XML để cập nhật nhiều bản ghi cùng lúc được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này thì nhớ like nhé.
Tôi nghĩ nhiều người biết rằng trong Oracle, các mảng (chẳng hạn như int[]) có thể được chuyển vào các thủ tục lưu trữ, điều đó có nghĩa là nhiều bản ghi có thể được chuyển đến dữ liệu và được cập nhật cùng nhau. Giảm số lượng yêu cầu cơ sở dữ liệu. Nhưng còn SqlServer thì sao? Nhiều người biết đến Insert số lượng lớn, và tôi cũng biết, nhưng tiếc là tôi chưa bao giờ sử dụng nó, tôi chỉ xem xét nó khi nhập dữ liệu vào DTS. Một dự án hiện tại có một số chức năng. Mỗi lần N (N<1000) bản ghi cần được cập nhật. Không có nhiều bản ghi. Nhưng nếu chỉ có một bản ghi được cập nhật mỗi lần và phần chèn được lặp lại thì mỗi chức năng cần N lần để yêu cầu. cơ sở dữ liệu. Nếu có Với 1.000 đồng thời, cơ sở dữ liệu không cần thực hiện bất kỳ công việc nào khác ngoài việc thực hiện công việc của bạn. Vì vậy, cần giảm thiểu các yêu cầu cơ sở dữ liệu và cập nhật tất cả các bản ghi cùng một lúc. May mắn thay, SqlServer cung cấp cho chúng ta một chức năng mới sử dụng XML (2000 dường như không có chức năng này). Trước tiên, hãy giả sử một yêu cầu: người dùng cập nhật một cuốn sách và cần cập nhật N chương cùng một lúc. Ý tưởng chung là thế này, trước tiên hãy cập nhật cuốn sách, sau đó duyệt qua số chương và cập nhật bảng chương của dữ liệu N lần. Bạn có thể xem hiệu suất này. Sau đó, hãy thử sử dụng XML để cập nhật thủ tục được lưu trữ bằng XML.
Sao chép mã mã như sau
Tạo THỦ TỤC UP_Book_Insert ( @BookId INT, @ChapterXml XML ) NHƯ BEGIN TẠO BẢNG #table ( ChapterId INT, ChapterName VARCHAR(255), Price INT ); CHÈN #table CHỌN * TỪ ( SELECT XCvalue('Id[1]', 'int') AS ChapterId, XCvalue('Name[1]', 'varchar(255)') AS ChapterName, XCvalue('Price[1] ','int') AS Giá TỪ @ChapterXml.nodes('Chapter') AS X(C) --注意:这里的X(C)命名空间是需要的 ) t; CHÈN VÀO tbChapter(BookId,ChapterId,ChapterName,Price) CHỌN @BookId,ChapterId,ChapterName,Price từ #table; KẾT THÚC 。
Trong thực tế, bảng tạm thời có thể được loại bỏ trong thủ tục lưu sẵn. Sau đó, chúng tôi thực thi nó để xem cách thực hiện thủ tục được lưu trữ.
Sao chép mã mã như sau
exec UP_Book_Insert 10000,'268Số 268100273Số 273100275Số 275100' 。
Thế còn nó thì sao? Không tệ. Bạn chỉ cần phân tích cú pháp định dạng XML trong quy trình được lưu trữ. Trong C#, định dạng XML có thể được truyền theo kiểu DbType.String. Viết một hàm khác để tạo một chuỗi ở định dạng XML. Một hàm để tạo định dạng XML.
Sao chép mã mã như sau
public static string FormatXmlInfo(List list) { if (list==null||list.Count<=0) { return String.Empty; } StringBuilder sb = new StringBuilder(); foreach (thông tin ChapterInfo trong danh sách) { sb.AppendFormat("{0}{1}{2}", info.ChapterId, info.ChapterName, info.Price); } return sb.ToString(); } 。
Được rồi, xong rồi. Hiệu suất cụ thể chưa được kiểm tra nhưng có một điều chắc chắn là nó hiệu quả hơn việc yêu cầu cơ sở dữ liệu nhiều lần hoặc lặp và tách chuỗi trong một thủ tục được lưu trữ.
Cuối cùng, bài viết này về phương pháp sử dụng XML để cập nhật nhiều bản ghi cùng lúc trong Sqlserver 2005 kết thúc tại đây. Nếu bạn muốn biết thêm về phương pháp sử dụng XML để cập nhật nhiều bản ghi cùng lúc trong Sqlserver 2005, vui lòng tìm kiếm trong bài viết CFSDN hoặc. tiếp tục duyệt các bài viết liên quan, tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!