02-10-12, 05:28 PM
السلام عليك ورحمة الله وبركاته
بعدما بنينا الجداول في قاعدة البيانات نأتي للجزء الثاني من طبقة البيانات وهو الإجراءات المخزنة .
س- ما هو الإجراء المخزن ؟
ج- http://www.arabteam2000-forum.com/in...howtopic=84176
في الـ N-Tier الإجراء المخزن Stored Procedure سيكون المقابل لسلوك الفئة الذي يتطلب اتصال مع جدول قاعدة البيانات .
بعبارة أخرى ،،،
نحن نقول في فئة Person هناك وظيفة (دالة) اسمها Delete تقوم بحذف بيانات الكائن الحالي في الجدول .
هذه الدالة Delete تحتاج لإجراء مخزن داخل قاعدة البيانات .
لهذا ننشئ إجراء مخزن أسمه sp_Delete_Person
و نضع بداخله الكود التالي :
هذا الإجراء المخزن يستقبل بارميتر اسمه @Id من نوع Bigint
سيتم استخدام هذا البارميتر في تنفيذ الاستعلام :
و كما قلنا سابقاً ، كل سلوك للفئة له علاقة بقاعدة البيانات لابد أن يكون له إجراء مخزن .
و على هذا فنحن بحاجة لـ 4 إجراءات مخزنة على الأقل تقابل كل فئة بنيناها في طبقة الأعمال ، و ستكون هذه الإجراءات كالتالي :
sp_Add_Person
sp_Delete_Person
sp_Update_Person
sp_Select_Person
و إذا أردنا تطبيق هذا الكلام على مثالنا الحالي ستكون الإجراءات المخزنة كالتالي :
بإمكانة نسخه و تنفيذه مباشرة على نفس قاعدة البيانات .
و بنفس الطريقة أتمنى أن تقوم بعمل الإجراءات المخزنة للفئة ContactNumber
أتمنى لكم التوفيق ،
و للحديث بقية إن شاء الله ،،،
بعدما بنينا الجداول في قاعدة البيانات نأتي للجزء الثاني من طبقة البيانات وهو الإجراءات المخزنة .
س- ما هو الإجراء المخزن ؟
ج- http://www.arabteam2000-forum.com/in...howtopic=84176
في الـ N-Tier الإجراء المخزن Stored Procedure سيكون المقابل لسلوك الفئة الذي يتطلب اتصال مع جدول قاعدة البيانات .
بعبارة أخرى ،،،
نحن نقول في فئة Person هناك وظيفة (دالة) اسمها Delete تقوم بحذف بيانات الكائن الحالي في الجدول .
هذه الدالة Delete تحتاج لإجراء مخزن داخل قاعدة البيانات .
لهذا ننشئ إجراء مخزن أسمه sp_Delete_Person
و نضع بداخله الكود التالي :
PHP كود :
CREATE PROC sp_Delete_Person
@Id as bigint
as
Delete From Person where ID=@Id
GO
هذا الإجراء المخزن يستقبل بارميتر اسمه @Id من نوع Bigint
سيتم استخدام هذا البارميتر في تنفيذ الاستعلام :
PHP كود :
Delete From Person where ID=@Id
و كما قلنا سابقاً ، كل سلوك للفئة له علاقة بقاعدة البيانات لابد أن يكون له إجراء مخزن .
و على هذا فنحن بحاجة لـ 4 إجراءات مخزنة على الأقل تقابل كل فئة بنيناها في طبقة الأعمال ، و ستكون هذه الإجراءات كالتالي :
sp_Add_Person
sp_Delete_Person
sp_Update_Person
sp_Select_Person
و إذا أردنا تطبيق هذا الكلام على مثالنا الحالي ستكون الإجراءات المخزنة كالتالي :
PHP كود :
/****** Object: Stored Procedure dbo.sp_Add_Person Script Date: 14/03/2008 05:50:23 م ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_Add_Person]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_Add_Person]
GO
/****** Object: Stored Procedure dbo.sp_Delete_Person Script Date: 14/03/2008 05:50:23 م ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_Delete_Person]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_Delete_Person]
GO
/****** Object: Stored Procedure dbo.sp_Select_Person Script Date: 14/03/2008 05:50:23 م ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_Select_Person]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_Select_Person]
GO
/****** Object: Stored Procedure dbo.sp_Update_Person Script Date: 14/03/2008 05:50:23 م ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_Update_Person]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_Update_Person]
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
/****** Object: Stored Procedure dbo.sp_Add_Person Script Date: 14/03/2008 05:50:24 م ******/
CREATE Proc sp_Add_Person
@ID bigint OUTPUT,
@Name nvarchar(255),
@Age int,
@Area nvarchar(255),
@Job nvarchar(255)
as
insert into Person([Name],Age,Area,Job)
values
(
@Name ,
@Age ,
@Area ,
@Job
);
Select @ID=Scope_Identity();
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
/****** Object: Stored Procedure dbo.sp_Delete_Person Script Date: 14/03/2008 05:50:24 م ******/
CREATE PROC sp_Delete_Person
@Id as bigint
as
Delete From Person where ID=@Id
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
/****** Object: Stored Procedure dbo.sp_Select_Person Script Date: 14/03/2008 05:50:24 م ******/
CREATE PROC sp_Select_Person
@Id as bigint
as
Select * From Person where ID=@Id
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
/****** Object: Stored Procedure dbo.sp_Update_Person Script Date: 14/03/2008 05:50:24 م ******/
CREATE Proc sp_Update_Person
@ID bigint ,
@Name nvarchar(255),
@Age int,
@Area nvarchar(255),
@Job nvarchar(255)
as
Update Person set
[Name] =@Name ,
Age=@Age ,
Area=@Area ,
job=@Job
where [ID]=@ID
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
بإمكانة نسخه و تنفيذه مباشرة على نفس قاعدة البيانات .
و بنفس الطريقة أتمنى أن تقوم بعمل الإجراءات المخزنة للفئة ContactNumber
أتمنى لكم التوفيق ،
و للحديث بقية إن شاء الله ،،،
http://www.elfouadsoft.com
mohamed_tegara@yahoo.com
mohamed_tegara@yahoo.com

