إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

إنشاء Function يقوم بإرجاع جدول


6 رد (ردود) على هذا الموضوع

#1 MMA

MMA

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 22 March 2007 - 03:11 PM

إخواني الكرام ، تحية طيبة وبعد ،

لدي سؤالين أتمني الإجابة عليهما :

السؤال الأول :

أتعامل مع SQL-Server ، وبداخلة يمكن إنشاء Function يقوم بإرجاء جدول ، مثال :


Create Function ListEmp(@ID_Dep BigInt) Returns Tabel
As
Return Select * From Emp Where Dep_No = @ID_Dep

ويمكن إستخدامة كما يلي :

Select * From dbo.XX(1)



هل هناك طريقة يمكن إنشاء نفس الإمكانيات من داخل أورال.


السؤال الثاني :

هناك أيضاً طريقة قد أعجبتني داخل SQL-Server وهي إنشاء جمله إدراج سجل داخل علامتي تنصيص وفي نهاية الإجراء يمكن تنفيذ الأمر كما يلي :


Sql = 'Insert Into Emp Values(1,Mostapha)'

Execute SP_ExecuteSQL Sql


هل هناك مثل هذة الإمكانية داخل أوراكل






وشكراً

مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )

 


#2 MMA

MMA

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 09 July 2007 - 02:04 AM

إخواني الكرام ، بقالي فترة طويلة ولم أحد يستجيب إلي ، فأعتقد أن ليس هناك أحد يعلم حل هذه المشكلة . وبفضل الله عز وجل ، عرضت الموضوع في منتدي الفريق العربي للبرمجيات قسم أوراكل ، وأخيراً وجدت الحل ، وسأرفقة حتي يستفيد منه أي شخص في المنتدي لم يعرفة :

1- جدول البيانات :

Create Table Emp
(
Emp_ID	Number(10),
Emp_Code VarChar2(20),
Emp_Name VarChar2(50),
Constraint PK_EMP Primary Key(Emp_ID)
)
/


2- بناء الحزمة والإجراء :

Create Or Replace Package PKG_REF
As
Type Cur_Emp Is Ref Cursor;
Procedure List_Emp(i_Start In Number,i_End In Number,
					  o_Emp Out Cur_Emp);
End;
/

--***************************************--

Create Or Replace Package Body PKG_REF
As
   Procedure List_Emp(i_Start In Number,
					  i_End   In Number,
					  o_Emp   Out Cur_Emp)
   Is
   Begin
	 Open o_Emp For Select Emp_ID,Emp_Code,Emp_Name 
					From Emp 
					Where Emp_ID Between i_Start And i_End;
   End;
End;
/



3- إستخدام الإجراء :


-- Declare the variables;
   Var I_Start   Number;
   Var I_End	 Number;
   Var o_Emp   RefCursor;

-- Input the data.
   Begin
		:I_Start := 10;
		:I_End	:= 50;
   End;

-- Output Records --
   SQL> Call   Pkg_Ref . List_Emp(:I_Start,:I_End,:O_EMP);


وشكراً

مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )

 


#3 MMA

MMA

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 12 July 2007 - 06:09 AM

إخواني الكرام ، تحية طيبة وبعد ،


أنا قمت بلإجراء إرتجاع بيانات من نوع Ref علي إجراء Procedure

ولكن حتي الآن لم أنجح في إرتجاع Ref علي غرض ، بحيث أن يكون بالشكل التالي :

Select * From List_Emp(1,5)

حيث أن List_Emp هو Function .


رجاء مساعدتكم


وشكراً

مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )

 


#4 MMA

MMA

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 13 July 2007 - 05:41 AM

إخواني الكرام ، هل سؤالي صعب لهذه الدرجة !!!!!!!!!!!!!!!!

مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )

 


#5 MMA

MMA

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 15 July 2007 - 06:03 AM

إخواني الكرام ، تحية طيبة وبعد ،

أخيراً وجدت الحل ، وسأرفقه لكم بمثال بسيط وتوضيحي ، وإذا وجدت حل أبسط من ذلك
سأرفقة لكم كي يستفاد منها الجميع .

ولكن لي سؤال بسيط ، أري أن ليس أحد يستجيب إلي بأي جملة ؟ هل لأن موضوعي صعب
أم تافه لدرجة أن لم أحد يستجيب إلي ؟ أم أن هذا الأمر طبيعي ؟

إخواني ، أنا لم أحتاج سوي مساعدتكم ، وإذا كان هذا الموضوع قد إستفاد منها الكثر ، فلم
أحتاج سوي دعائكم لي ؟


ولكن هذا شيء يحيرني ، منذ بداية كتابتي للموضوع ، وأحب أن أوضح لكم بأنني إذا وجدت
مشاركة لست أعلم عنها شيء ، فلم أرد أي رد ، كي أترك مساحة للغير .


وشكرا


المثال :
--------------------------------------------------------------------------------------------------------------
-- جدول البيانات --
Create Table Employee
(
Emp_ID Number(10),
Emp_Code VarChar2(10),
Emp_Name VarChar2(25),
Constraint PK_Employee Primary Key(Emp_ID)
)
/
Insert Into Employee Values(1,'001','Ahmed','M',1100)
/
Insert Into Employee Values(2,'002','Mostapha','M',1250)
/
Insert Into Employee Values(3,'003','Usif','M',1400)
/
Insert Into Employee Values(4,'004','Sara','F',1000)
/
Insert Into Employee Values(5,'005','Tahany','F',1020)
/
Insert Into Employee Values(6,'006','Dalya','F',1130)
/
Insert Into Employee Values(7,'007','Mahmod','M',1290)
/
Insert Into Employee Values(8,'008','Farag','M',1800)
/
Commit
/

-- بناء كائنات ومصفوفات --
Create Or Replace Type T_EMP Is Object(Emp_ID Number(10),
Emp_Code VarChar2(10),Emp_Name VarChar2(20),
Emp_Sex VarChar2(8),Emp_Salary VarChar2(10))
/
Create Or Replace Type T_EMP_Table Is Table Of T_Emp
/

-- إنشاء غرض يقوم بإرجاع جدول --
Create Or Replace Function L_Emp Return T_EMP_Table
As
Cursor CUR_EMP Is Select Emp_ID,Emp_Code,Emp_Name,
(Case When Emp_Sex='M' Then 'Male' Else 'Feminize' End)
As Emp_Sex,To_Char(Emp_Salary,'9990.00') As Emp_Salary
From Employee Order By Emp_ID;
ID_Serial Number(10);
ID_Code VarChar2(20);
ID_Name VarChar2(30);
ID_Sex VarChar2(8);
ID_Salary VarChar2(10);
P_EMP T_EMP_Table;
Begin
P_EMP := T_EMP_Table();

Open Cur_Emp;

Fetch CUR_EMP Into ID_Serial,ID_Code,ID_Name,ID_Sex,ID_Salary;
While CUR_EMP%Found Loop
P_EMP.Extend;
P_EMP(P_EMP.Count) := T_Emp(ID_Serial,ID_Code,ID_Name,ID_Sex,ID_Salary);
Fetch CUR_EMP Into ID_Serial,ID_Code,ID_Name,ID_Sex,ID_Salary;
End Loop;

Return P_EMP;
End;
/

Select * From Table(L_Emp)
/

آسف علي عدم التنسيق ، لكن بصراحة مشعارف شاشة ( إضافة رد ) ، كان بها مشكلة غير معروفة

مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )

 


#6 MuhammadYassein

MuhammadYassein

    عضو نشط

  • الأعضــاء
  • 304 مشاركة
  • الاسم الأول:Muhammad
  • اسم العائلة:Yassein
  • البـلـد: Country Flag
  • الاهتمامات:Oracle
    SOA
    BPM
    ADF
    Java
    Forms
    Reports
    Analysis
  • المنصب الحالي:Senior Oracle SOA BPM Specialist

تاريخ المشاركة 06 August 2007 - 03:28 PM

السلام عليكم و رحمة الله و بركاتة
اولا جزاك الله خيرا علي هذا الموضوع الشيق

لماذا وضعت عبارة Fetch مرتين . ؟

اللهم اني احبك ... و احب من يحبك ... و احب كل عمل يقربني الى حبك ... اللهم أني أسألك رضاك و عفوك وجنة الفردوس

 
 
public void myInfo{

String myName    = "محمد ياسين" ;
String myCountry = "مصر ام الدنيا" ;
String MyGod     = "لا اله الا الله"; 
String myProphet = "محمد رسول الله";
String MyBook    ="القرآن العظيم";
String myGoal    ="جنة الفردوس";
boolean stillLife = true;


while(stillLife){
        System.out.println("لا اله الا الله محمد رسول الله");
}

}

 

979213111.jpg

 

 

Contact me now ..

 

 - Facebook - Linkedin - Youtube  - Twitter


#7 MuhammadYassein

MuhammadYassein

    عضو نشط

  • الأعضــاء
  • 304 مشاركة
  • الاسم الأول:Muhammad
  • اسم العائلة:Yassein
  • البـلـد: Country Flag
  • الاهتمامات:Oracle
    SOA
    BPM
    ADF
    Java
    Forms
    Reports
    Analysis
  • المنصب الحالي:Senior Oracle SOA BPM Specialist

تاريخ المشاركة 06 August 2007 - 03:29 PM

السلام عليكم و رحمة الله و بركاتة
اولا جزاك الله خيرا علي هذا الموضوع الشيق

لماذا وضعت عبارة Fetch مرتين . ؟

اللهم اني احبك ... و احب من يحبك ... و احب كل عمل يقربني الى حبك ... اللهم أني أسألك رضاك و عفوك وجنة الفردوس

 
 
public void myInfo{

String myName    = "محمد ياسين" ;
String myCountry = "مصر ام الدنيا" ;
String MyGod     = "لا اله الا الله"; 
String myProphet = "محمد رسول الله";
String MyBook    ="القرآن العظيم";
String myGoal    ="جنة الفردوس";
boolean stillLife = true;


while(stillLife){
        System.out.println("لا اله الا الله محمد رسول الله");
}

}

 

979213111.jpg

 

 

Contact me now ..

 

 - Facebook - Linkedin - Youtube  - Twitter