الجزء
ال19: الأجراء المخزن مع
ارجاع قيمة
Stored Procedure with Return Value
تعلمنا في الجزء ال18 كيفية
استرجاع قيمة وتخزينها في متغير عن طريق الOUTPUT , في هذا الجزء سنتعلم كيفية ارجاع قيمة
بطريقة الReturn وسنعرف ماالفرق بينهما:
الفرق بين الأثنين:
Output parameter
|
Return status value
|
نوع القيم المسترجعة قد تكون اي نوع من انواع البيانات
|
نوع القيمة المسترجعة يجب ان تكون عدد integer
|
عدة قيم مسترجعة
|
قيمة مسترجعة واحدة فقط
|
تستخدم لأسترجاع بيانات مثل : اسم الموظف , عدد
الموظفين , قسم الموظفين وغيرها....
|
تستخدم في العمليات لمعرفة ما اذا كانت قيمة نجاح او
خطأ
|
مثال: اريد معرفة عدد الموظفين؟
يمكن ذلك عن طريق استخدام الOUTPUT parameter وكذلك عن طريق الReturn
status value :
الحل الأول: عن طريق الOUTPUT
parameter :
انشاء الأجراء اللازم:
USE [test]
GO
CREATE PROC spGetEmpCount
@totalEmp int OUTPUT
AS
BEGIN
SELECT @totalEmp = COUNT(ID) FROM tblEmployees
END
تنفيذ الأجراء:
DECLARE @totalEmp INT
EXEC spGetEmpCount @totalEmp OUTPUT
PRINT @totalEmp
الحل الثاني بأستخدام الReturn:
انشاء الأجراء اللازم:
CREATE PROC spGetEmpCount2
AS
BEGIN
RETURN (SELECT COUNT(ID) FROM tblEmployees)
END
تنفيذ الأجراء:
DECLARE @TotalEmp INT
EXEC @TotalEmp = spGetEmpCount2
PRINT @TotalEmp
المثال التالي سيوضح الفرق بين
الحل الأول والحل الثاني اي بين الOUTPUT
parameters و بين الReturn
status value
مثال: اريد استرجاع اسم الموظف
ونوع جنسه الذي رقمه التعريفي يساوي 5؟
الحل الأول: عن طريق الOUTPUT
parameter :
انشاء جملة الأستعلام لأسترجاع اسم
الموظف مع نوع جنسه:
أنشاء الأجراء اللازم:
CREATE PROC spGetEmpByID
@ID int,
@Name NVARCHAR(20) OUTPUT,
@Gender NVARCHAR(20) OUTPUT
AS
BEGIN
SELECT @Name = E.NAME,@Gender=G.GenderName
FROM tblEmployees E
JOIN tblGender G
ON E.GenderID =
G.ID
WHERE E.ID = @ID
END
تنفيذ الأجراء:
DECLARE @EmpName NVARCHAR(20),@EmpGender NVARCHAR(20)
EXEC spGetEmpByID 5, @EmpName OUTPUT, @EmpGender OUTPUT
PRINT 'Employee Name = '
+ @EmpName +' Employee Gender = '+@EmpGender
الحل الثاني بأستخدام الReturn:
انشاء الأجراء اللازم:
لاحظ عند عمل الأجراء وتنفيذه يظهر
خطأ عدم قبول اكثر من تعبير اي يتوجب علينا حذف الربط وهذا اول مقارنة مع الOUTPUT parameters
CREATE PROC spGetEmpByID2
@ID int
AS
BEGIN
RETURN
(SELECT NAME
FROM tblEmployees
WHERE ID = @ID)
END
تنفيذ الأجراء:
لاحظ الخطأ: القيمة المسترجعة يجب
ان تكون من نوع NVARCHAR ولكن في الReturn status value يجب ان تكون القيمة المسترجعة هي Integer فظهر خطأ
تحويل الNVARCHAR الى
عدد
فبهذا تمت المقارنة بين الأثنين.
Comments
Post a Comment