Skip to main content

الجزء ال19: الأجراء المخزن مع ارجاع قيمة Stored Procedure with Return Value

الجزء ال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

Popular posts from this blog

PART #2: Registration and Login System Tutorial Using PHP and MYSQL

PART #2: Registration and Login System Tutorial Using PHP and MYSQL Registration and login system using PHP and MySQL database, in this part you will do the following: 1- Creating the registration page. 2- Validating the registration form. 3- Sending the activation link on successful registration. note: you can find the mailserver tool here: [MailServerTool] Good luck. PHP,Mysql,Programming,web development,How to,Technology,web programming,web project ideas,safaa al-hayali,saf3al2a,Registration and login,Registration and login in php,php and mysql login system,registration system using php and mysql,login and register php,login and register php with database,database,php tutorial,learn php,tutorial

How To Play .srt Subtitles File in Windows Media Player

How To Play .srt Subtitles File in Windows Media Player links: https://sourceforge.net/projects/wmpsub/ wmp,.srt Subtitles File in Windows Media Player,How To Play .srt Subtitles File in Windows Media Player,How To,Safaa Al-Hayali,saf3al2a,srt subtitle in WMP,Windows,Windows Media Player,media,.ass,local subtitles

Virtual Box : How to Increase Disk Size - Windows

How to increase disk size or disk storage in oracle virtual box the command you have to use: vboxmanage.exe modifymedium "[YourPathToVdiFileOfYourVirtualMachine]" --resize [NUMBER] virtual,box,vbox,oracle,partition,size,disk,increase,resize,windows,10,microsoft,vdi,vboxmanage,configuration,Safaa AL-Hayali,saf3al2a,Oracle,VirtualBox,How to,windows 10