الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استخدام الوظائف المخزنة

مغلق
بدأه محمد سامر أبو سلو في 28 أبريل 2006 · 2 رد · 819 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

في العديد من الحالات البرمجية بدلا من تنفيذ عبارة SQL مباشرة ستحتاج إلى تنفيذ ما يدعى بالوظائف المخزنة أو Stored Procedures والتي تعتبر بدورها طريقة ممتازة لتغليف منطق قواعد البيانات وتعزيز الأمان في التطبيقات متعددة الطبقات multitiered ولتنفيذ وظيفة مخزنة ستحتاج إلى Command object تقوم بضبط خاصيته CommandType إلى StoredProcedure وخاصية CommandText إلى اسم الوظيفة المخزنة وفي المثال التالي نقوم بتنفيذ وظيفة مخزنة تقرأ عدد employees في قاعدة البيانات Pubs

Public Overloads Function CountEmployees() As Integer
    Dim oPubConnection As New SqlConnection
    Dim sConnString As String
    Dim oSqlCommand As SqlCommand
    Try
        sConnString = "Data Source=drcsrv01;Initial Catalog=pubs;" & _
        "Integrated Security=True"
        oPubConnection.ConnectionString = sConnString
        oPubConnection.Open()
        oSqlCommand = New SqlCommand()
        oSqlCommand.Connection = oPubConnection
        oSqlCommand.CommandText = "GetEmployeeCount"
        oSqlCommand.CommandType = CommandType.StoredProcedure
        Return oSqlCommand.ExecuteScalar
    Catch oEx As Exception
        MessageBox.Show(oEx.Message)
    Finally
    If Not oPubConnection Is Nothing Then
        oPubConnection.Close()
    End If
End Try

في العادة عندما نقوم بتنفيذ وظيفة مخزنة نحتاج إلى تمرير وسائط دخل Input Parameters وقد تستعيد نتائج الخرج من خلال وسائط الخرج Output Parameters وللتعامل مع الوسائط يجب علينا تعريف مرجع لـ SqlParameter وتزويده باسم الوسيطة ونوعها وبالنسبة لبعض أنواع البيانات ستحتاج لتمرير حجم هذه البيانات أيضا وعندما تمرر وسيطة خرج، دخل، دخل-خرج عليك أيضا أن تحدد اتجاهها في المثال التالي نمرر وسيطة دخل عبارة عن حرف وتعيد عدد الـموظفين الذين تبدأ أسماء عائلاتهم بذلك الحرف والعدد يعاد بشكل وسيطة خرج

Public Overloads Function CountEmployees(ByVal LInitial As String) As Integer
    Dim oPubConnection As New SqlConnection
    Dim sConnString As String
    Dim oSqlCommand As SqlCommand
    Try
        sConnString = "Data Source=drcsrv01;Initial Catalog=pubs;" & _
        "Integrated Security=True"
        oPubConnection.ConnectionString = sConnString
        oPubConnection = New SqlConnection(sConnString)
        oPubConnection.Open()
        oSqlCommand = New SqlCommand()
        oSqlCommand.Connection = oPubConnection
        oSqlCommand.CommandText = "GetEmployeeCountbyLInitial"
        oSqlCommand.CommandType = CommandType.StoredProcedure
        Dim oInputParam As SqlParameter = _
        oSqlCommand.Parameters.Add("@LInitial", SqlDbType.Char, 1)
        oInputParam.Value = LInitial
        Dim oOutPutParam As SqlParameter = _
        oSqlCommand.Parameters.Add("@EmployeeCount", SqlDbType.Int)
        oOutPutParam.Direction = ParameterDirection.Output
        oSqlCommand.ExecuteNonQuery()
        Return oOutPutParam.Value
    Catch oEx As Exception
        MessageBox.Show(oEx.Message)
    Finally
       If Not oPubConnection Is Nothing Then
           oPubConnection.Close()
       End If
    End Try
End Function

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#2

رائع هذا ما كنت ابحث عنه ،

جزيت خيرا أخي العزيز

#3

مشكووووووووووووور

يا أيها الناس قولو لا إله إلا الله تفلحوا وتملكوا بها العرب وتذل لكم العجم وإذا آمنتم كنتم ملوكا في الجنة

هذا الموضوع مغلق.

مواضيع مشابهة