تنفيذ الترحيل في الإجراءات المخزنة
الكاتب:Eve Cole
وقت التحديث:2009-07-01 15:55:30
أنا لست مبرمجًا ذو خبرة كبيرة، لذا سأواجه العديد من المشكلات أثناء المشروع. يعد استخدام الترحيل في قاعدة البيانات أحد المشكلات التي واجهتها أثناء المشروع، وقد راجعت الكثير من المعلومات من الإنترنت، وهناك العديد من الطرق. لكنني أعتقد أن إنشاء جدول بيانات مؤقت هو أبسط طريقة عندما كنت أقوم بتمديد العضوية، وجدت أن Microsoft تستخدمه أيضًا بهذه الطريقة. يمكنك فقط فتح إجراء العضوية المخزن وإلقاء نظرة.
لا فائدة من قول المزيد، ما عليك سوى إلقاء نظرة على الكود وسيكون واضحًا، هاها.
1 إنشاء إجراء dbo.CreateSimple
2(
3 @PageIndex int،
4 @ حجم الصفحة int
5)
6AS
7ابدأ
8-تحديد ثلاثة متغيرات:
9--PageLowerBound: الحد الأدنى للسجلات المستردة.
10--PageUpperBound: الحد الأعلى للسجلات المراد استرجاعها.
11--TotalRecords: يُرجع العدد الإجمالي للسجلات، ويستخدم بشكل أساسي لحسابات الصفحة.
12 أعلن @PageLowerBound int
13 أعلن @PageUpperBound int
14 أعلن @TotalRecords int
15
16--حساب قيم الحدود العليا والدنيا.
17 SET @PageLowerBound=@PageIndex * @PageSize
18 مجموعة @PageUpperBound=@PageLowerBound+@PageSize-1
19
20--إنشاء جدول مؤقت:
21--IndexId هو المعرف ويزداد تلقائيًا بمقدار 1؛
22--يتم ملء SimpleId بجدول البيانات [Simple]؛
23 إنشاء جدول #PageIndexForSimple
أربعة وعشرون (
25 معرف الفهرس هوية int (0,1) ليست فارغة،
26 SimpleId int
27)
28--ملء الجدول المؤقت
29 أدخل في #PageIndexForSimple(SimpleId)
30 حدد ثانية.[SimpleId]
31 من [بسيط] ق
32--أين يمكن إضافة عبارات الشرط وODER BY هنا
33
34--احصل على إجمالي عدد السجلات. في الواقع، عدد الصفوف المتأثرة هو إجمالي عدد السجلات.
35 حدد @TotalRecords=@@ROWCOUNT
36
37-الحصول على السجل الذي نريده.
38 اختر الصورة.*
39 من [بسيط] s,#PageIndexForSimple ص
40 أين s.[SimpleId]=p.[SimpleId]
41 AND ص.[IndexId]>=@PageLowerBound
42 AND P.[IndexId]< =@PageUpperBound
43 ترتيب حسب s.[بسيط]
44
45-إرجاع العدد الإجمالي للسجلات.
46 العودة @TotalRecords
47END يمكنك فهم ذلك من التعليقات أعلاه هاها، الآن بعد أن كتبتها هنا، اكتب أيضًا رمز البرنامج:
1قائمة عامة<Simple> GetSimple(int pageIndex,int pageIndex,out int TotalRecords){
2 List<Simple> الكيان=قائمة جديدة<Simple>();
3 SqlParameter[]param=new SqlParameter[]{
4 معلمات SqlParameter جديدة ("@PageIndex"،SqlDbType.Int)،
5 SqlParameter("@PageSize",SqlDbType.Int), جديد
6 SqlParameter("@ReturnValue",SqlDbType.Int), جديد
7 };
8 بارام[0].Value=pageIndex;
9 بارام[1].Value=pageSize;
10 بارام[2].Direction = ParameterDirection.ReturnValue;
11 SqlDataReader Reader=SqlHelper.ExecuteReader(CommandType.StoredProcedure, "GetSimple", param);
12 بينما(reader.Read()){
13 كيان.إضافة(GetSimpleEntity(قارئ))
14}
15 قارئ.إغلاق();
16 محاولة{
17 TotalRecords=(int)param[2].Value;
18 }امسك{}
19 كيان العودة؛
20} بعض الوظائف المذكورة أعلاه كتبتها بنفسي:
فئة SqlHelper: فئة استعلام قاعدة البيانات المبسطة.
GetSimpleEntity (قارئ SqlDataReader): نظرًا لأن الحصول على فئات الكيانات الأساسية غالبًا ما يستخدم في المشاريع، تتم كتابة وظيفة خاصة منفصلة لإعادة الاستخدام؛
تجدر الإشارة إلى أنه عند الحصول على العدد الإجمالي للسجلات، قد يكون النوع DbNull، مما يسبب خطأ.
http://www.cnblogs.com/xdotnet/archive/2006/09/19/procedure_for_paging_select.html