الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

تعرف على Pl/sql Object Oriented / Object Type

Featured Replies

بتاريخ:

السلام عليكم و رحمة الله وبركاتة
 
بسم الله نبدا ..
 
اعتقد الدرس دة حيكون سهل قوى على البشمبرمجين اللى شغالين فى مجال الجافا ... يلا نبدا و نشوف
 
حنتكلم النهاردة باذن الله تعالى على نوع جديد من DataType الموجودة فى اوراكل و اعتقد مش ناس كتير تعرفها علشان هى مش موجودة فى كورس اوراكل و ياريت اى حد يعرف عن DataType يضيف اى حاجة على موضوعى لكى نستفيد باذن الله .
 
حنقدر نستفيد اية من هذا النوع ؟؟! طيب اية رايك خلينا نشوف حنستفاد اية بس و احنا بنتكلم تحت باذن الله .
 
بس خلينا نتفقد الاول و نقول انا Object Type دة بيتكون من attribute  و Method زى ما اى حد درس OOP فى اى لغة برمجة .
 
attribute  دى بتساوى عندنا colmun و Method دى هى functions and Procedures
 
الاولي دى المتغيرات اللى بتاخد القيم

و الثانية دى العمليات اللى حتحصل و دة شرح مبسط جدا علشان انا مش عامل موضوع لشرح مفهوم OOP انا داخل على طول على Object Type لو حد مش قادر يستوعب الفرق بين attribute or Method ياريت يشوف اى مقالة للمبدعين فى المنتدى عن OOP .
 

 
Syntax


 

CREATE OR REPLACE TYPE < Object Type Name >  AS OBJECT
(
< Attribute Name > < Attribute DataType >
);

طبعا حنزود حاجات على Syntax كل شوية
 

CREATE OR REPLACE TYPE DEMASY.employee_object AS OBJECT
(
   SEQ NUMBER,
   EMP_NUMBER NUMBER,
   FIRST_NAME VARCHAR2 (30 BYTE),
   LAST_NAME VARCHAR2 (30 BYTE),
   EMAIL VARCHAR2 (50 BYTE),
   BIRTHDAY DATE,
   START_DAT DATE,
   END_DATE DATE,
   JOB VARCHAR2 (100 BYTE),
   DEPT VARCHAR2 (100 BYTE),
   SALARY NUMBER (7, 2),
   BONUS NUMBER (7, 2),
   DESCRIPTION VARCHAR2 (1000 BYTE)
);

 كدة خلص انا عملت Object type و زى ما انت شايف هو زى الجدول بالظبط هو Object بيشيل بيانات الموظفين و فية attributes عن رقم الموظف و اسمة و ايميله و بيانات اخرى .
 
طيب اقدر استخدمة ازاى تعال شوية معانا الكود الجاى دة

 

DECLARE
  x_emp   employee_object;
BEGIN
  x_emp :=
     employee_object (1,
                      1001,
                      'Ahmed',
                      'El-Demasy',
                      '[email protected]',
                      TO_DATE ('13111986', 'DDMMRRRR'),
                      SYSDATE,
                      SYSDATE,
                      'Oracle Application Technical Consultant',
                      'Oracle E-Business Suite',
                      1000,
                      150,
                      'www.ahmedeldemasy.com');
  DBMS_OUTPUT.put_line (
     'Employee Name : ' || x_emp.FIRST_NAME || ' ' || x_emp.last_NAME);
END;

Result : Ahmed El-Demasy

 

ملحوظة : انا مقدرش استخدم Object الا لما اعمل منة instance الاول .

ثانيا متقدرش assigning قيمة الى attribute زى المثال القادم .

DECLARE
     x_emp     employee_object;
BEGIN
     x_emp.first_name := 'Ahmed';
END;

ممكن انشاء Object من Object اسمها Nested Object

CREATE OR REPLACE TYPE employee_object AS OBJECT
(
  SEQ NUMBER,
  EMP_NUMBER NUMBER,
  FIRST_NAME VARCHAR2 (30 BYTE),
  LAST_NAME VARCHAR2 (30 BYTE),
  EMAIL VARCHAR2 (50 BYTE),
  BIRTHDAY DATE,
  START_DAT DATE,
  END_DATE DATE,
  JOB VARCHAR2 (100 BYTE),
  DEPT VARCHAR2 (100 BYTE),
  SALARY NUMBER (7, 2),
  BONUS NUMBER (7, 2),
  DESCRIPTION VARCHAR2 (1000 BYTE)
);

CREATE OR REPLACE TYPE employee_object2 AS OBJECT
(
  code NUMBER,
  emp_details employee_object
);

يتابع B)

 

بتاريخ:
  • كاتب الموضوع

علشان تعمل Add او Drop لـــ Attribute

 

Syntax :

 

Add Syntax :

ALTER TYPE < Type Name >
ADD ATTRIBUTE < New Attribute Name > DATE;

Drop Syntax :

ALTER TYPE < Type Name >
DROP ATTRIBUTE < New Attribute Name >;

و الله المستعان

بتاريخ:
  • كاتب الموضوع

 

Declare MEMBER function on object type


CREATE OR REPLACE TYPE DEMASY.payroll_object AS OBJECT
(
  tran NUMBER,
  emp_details employee_object,
  total_income NUMBER,
  --- such as Method on Java Lanaguage
  MEMBER FUNCTION get_tran_Date
     RETURN DATE,
  MEMBER PROCEDURE set_total_income
);

Body


CREATE OR REPLACE TYPE BODY DEMASY.payroll_object
AS
  MEMBER FUNCTION get_tran_Date
     RETURN DATE
  IS
     x_get_tran_Date   DATE;
  BEGIN
     SELECT SYSDATE INTO x_get_tran_Date FROM DUAL;
     RETURN (x_get_tran_Date);
  END get_tran_Date;
  MEMBER PROCEDURE set_total_income
  IS
  BEGIN
     total_income := (emp_details.SALARY + emp_details.BONUS);
  END set_total_income;
END;

 

بتاريخ:

مشاركة وعودة قووويه يا مبدع..

ماشا الله عليك..

 

 

 

مووفق.

بتاريخ:
  • كاتب الموضوع

تسلم يا هندسة ...لسه حكمل الدرس باذن الله لما القى وقت

و الله المستعان

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.