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

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

صورة
- - - - -

شرح موضوع Oracle Database Objects


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

#1 omar-alreyati

omar-alreyati

    عضو مميز

  • الأعضــاء
  • 596 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 25 February 2007 - 09:47 AM

# أولاً : بناء الـObject Types:-
إليك المثال الآتي الذي يستعمل جملة CREATE TYPE لبناء Object Type إسمها address_typ والتي تستعمل لتمثيل العنوان (address) تتكون من أربع خواص هي street, city, state,zip . وكما في الشكل الآتــــــي:-
CREATE TYPE address_typ AS OBJECT (
  street VARCHAR2(15),
  city   VARCHAR2(15),
  state  CHAR(2),
  zip	VARCHAR2(5)
);
/
والآن دعنا ننظر الى المثال التالي الذي يمثل الشخص(person ) كـObject واسمها person_typ والتي تستعمل الـObject التي اسمها address_typ والتي تم بناء ها في المثال السابق:-
CREATE TYPE person_typ AS OBJECT (
  id		 NUMBER,
  first_name VARCHAR2(10),
  last_name  VARCHAR2(10),
  dob		DATE,
  phone	  VARCHAR2(12),
  address	address_typ
);
/
والآن لكي تتضح الصورة أكثر لنرى هذا المثال المنتج (products) واسمه product_typ مع ملاحظة ان هذه الtype تستخدم فانكشن اسمها get_sall_by_date لتحديد صلاحية المنتج بالاعتماد على المتغير days_valid ، واليك المثال :-\
CREATE TYPE product_typ AS OBJECT (
  id		  NUMBER,
  name		VARCHAR2(15),
  description VARCHAR2(22),
  price	   NUMBER(5, 2),
  days_valid  NUMBER,

  -- declare the get_sell_by_date() member function,
  -- get_sell_by_date() returns the date by which the
  -- product must be sold
  MEMBER FUNCTION get_sell_by_date RETURN DATE
);
/
الmember function تستخدم الإعلانget_sell_by_date مع ملاحظة انه يمكن استخدام procdure بدل الfunction باختلاف ان البروسجير لا يرجع قيمة كما في الفانكشن

الآن نعمل الbody الخاص بالproduct_typ وهذه الbody سوف تحوي على تعريف الفانكشن get_sell_by_date وهي كما يلي :
CREATE TYPE BODY product_typ AS
  -- define the get_sell_by_date() member function,
  -- get_sell_by_date() returns the date by which the
  -- product must be sold
  MEMBER FUNCTION get_sell_by_date RETURN DATE IS
	v_sell_by_date DATE;
  BEGIN
	-- calculate the sell by date by adding the days_valid attribute
	-- to the current date (SYSDATE)
	SELECT days_valid + SYSDATE
	INTO v_sell_by_date
	FROM dual;

	-- return the sell by date 
	RETURN v_sell_by_date;
  END;
END;
/
كما ترى ان الget_sell_by_date تم حسابها بجمع المتغير days_valid مع التاريخ الحالي (sysdate)

في النهاية من الممكن عمل synonym وكما يلي :-
CREATE PUBLIC SYNONYM pub_product_typ FOR product_typ;
إنتهى الدرس وسوف اكمل الموضوع في المرات اللاحقة

بالله عليكم لا تنسوني من دعاءكم الصالح
لا تنسوا أهل غزة والعراق والمجاهدين من دعاءكم

#2 عبدالله ندا

عبدالله ندا

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

  • المجموعة الماسية
  • 1,017 مشاركة
  • الاسم الأول:عبدالله
  • اسم العائلة:ندا
  • البـلـد: Country Flag
  • المنصب الحالي:Technical Applications Manager

تاريخ المشاركة 25 February 2007 - 12:47 PM

رائع جدا وبدايه موفقه لشرح هذا المبدء الهام
في انتظار شرح مفصل و كامل
مع تحياتي

في زمننا هذا .........................
ليس هناك قلب ناصع البياض ...
ولا قلب قاتم السواد ...
ولكن دائما
BLACK&WHITE

 

مع تحياتي
عبدالله ندا

http://anada.4shared.com

abdallahnada@hotmail.com 


#3 omar-alreyati

omar-alreyati

    عضو مميز

  • الأعضــاء
  • 596 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 26 February 2007 - 01:58 PM

تكملة للموضوع السابق:
اذا اردت معرفة هيكلية الobject type ما عليك سوى عمل ايعاز describe للobject وكما في الشكل الآتي:
DESCRIBE address_typ
  Name									  Null?	Type
 ----------------------------------------- -------- ------------
 STREET											 VARCHAR2(15)
 CITY											   VARCHAR2(15)
 STATE											  CHAR(2)
 ZIP												VARCHAR2(5)

وايضاً
DESCRIBE person_typ
  Name									  Null?	Type
 ----------------------------------------- -------- ------------
 ID												 NUMBER
 FIRST_NAME										 VARCHAR2(10)
 LAST_NAME										  VARCHAR2(10)
 DOB												DATE
 PHONE											  VARCHAR2(12)
 ADDRESS											ADDRESS_TYP

وايضاً يمكن وضع عمق للايعاز describe كما في الشكل الاتي :
SET DESCRIBE DEPTH 2
DESCRIBE person_typ
 Name									  Null?	Type
 ----------------------------------------- -------- ------------
 ID												 NUMBER
 FIRST_NAME										 VARCHAR2(10)
 LAST_NAME										  VARCHAR2(10)
 DOB												DATE
 PHONE											  VARCHAR2(12)
 ADDRESS											ADDRESS_TYP
   STREET										   VARCHAR2(15)
   CITY											 VARCHAR2(15)
   STATE											CHAR(2)
   ZIP											  VARCHAR2(

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

بالله عليكم لا تنسوني من دعاءكم الصالح
لا تنسوا أهل غزة والعراق والمجاهدين من دعاءكم

#4 omar-alreyati

omar-alreyati

    عضو مميز

  • الأعضــاء
  • 596 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 04 March 2007 - 01:38 PM

موضوعنا لهذا اليوم هو : كيفية استخدام oject types مع الأعمدة والجدوال في قواعد البيانات:-
يمكن استخدام الobject types الأعمدة وتسمى (column object) ومع الجدوال (object table) ، ولكي يتضح الموضوع أكثر اليكم الأمثلة على ذلك :-
CREATE TABLE products (
  product		   product_typ,
  quantity_in_stock NUMBER
);
هذا المثال يعمل على بناء جدول اسمه products يحوي على column object اسمه product_typ

وأيضاً يمكن استخدام الobject types مع الجدوال وكما في المثال الأتي :-
CREATE TABLE object_products OF product_typ;
CREATE TABLE object_customers OF person_typ;
هذان الجدولين (object_products & object_customers) تم بناءهما باستخدام الobject type

هذا ما لدي اليوم اتمنى أن اكون قد أوصلت الفكرة ، وسوف نكمل في المرات السابقة .

بالله عليكم لا تنسوني من دعاءكم الصالح
لا تنسوا أهل غزة والعراق والمجاهدين من دعاءكم

#5 omar-alreyati

omar-alreyati

    عضو مميز

  • الأعضــاء
  • 596 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 07 March 2007 - 09:21 AM

سوف نتطرق اليوم الى كيفية معالجة عمليات DML (الاستعلام ، الاضافة ، التعديل ، الحذف) على جدول معين .
أولاً نقوم ببناء جدول جديد لكي نجري عليه عمليات DML وليكن products وسوف يحوي هذا الجدول على column object وكما يلي :
CREATE TABLE products (
  product		   product_typ,
  quantity_in_stock NUMBER
);
الproduct_typ تم بناءه سابقاً (شو بلشنا ننسى)

1- الاضافة على جدول الproducts :-
INSERT INTO products (
  product,
  quantity_in_stock
) VALUES (
  product_typ(1, 'Pasta', '20 oz bag of pasta', 3.95, 10),
  50
);
تم أضافة صفين على الجدول وقد تم تمرير البيانات أيضاً الى product_typ

2- الأستعلام من جدول الproducts:-
SELECT *
FROM products;

PRODUCT(ID, NAME, DESCRIPTION, PRICE, DAYS_VALID)
------------------------------------------------------------
QUANTITY_IN_STOCK
-----------------
PRODUCT_TYP(1, 'Pasta', '20 oz bag of pasta', 3.95, 10)
			   50

PRODUCT_TYP(2, 'Sardines', '12 oz box of sardines', 2.99, 5)
			   25
لاحظ هنا يم اظهار الصفين اللذان تم أضافتهما سابقاً ، ويمكن أيضاً الاستعلام فردياً (اي بشرط معين) وذلك باستخدام الalias وكما في الشكل الأتي :-
SELECT p.product
FROM products p
WHERE p.product.id = 1;

PRODUCT(ID, NAME, DESCRIPTION, PRICE, DAYS_VALID)
-------------------------------------------------------
PRODUCT_TYP(1, 'Pasta', '20 oz bag of pasta', 3.95, 10)

أنظر الى المثال التالي بتركيز
SELECT p.product.get_sell_by_date()
FROM products p;

P.PRODUCT
---------
12-OCT-03
07-OCT-03
في هذا المثال تم الاعتماد على object type التي اسمها product_typ والتي تحوي الفانشكن get_sell_by_date() والتي تقوم بارجاع تاريخ صلاحية المنتج .(راجع الموضوع السابق)

3- التعديل على جدول الproducts:-
عندما تريد أن تعديل على البيانات يجب أستخدام الalias وكما في الشكل الأتي:-
UPDATE products p
SET p.product.description = '30 oz bag of pasta'
WHERE p.product.id = 1;
أتوقع أن المثال واضح

4- الحذف من جدول الproducts :
وايضاً هنا لكي نحذف يجب وضع alias وكما في الشكل الآتي:
DELETE FROM products p
WHERE p.product.id = 2;
في النهاية أعمل أيعاز rollback حتى تبقى البيانات كما هي ، لاننا سوف نستخدم هذه البيانات في الدروس التالية.
أنتهى الدرس متمنياً أن أكون عند حسن الظن وما توفيقي الا بالله

بالله عليكم لا تنسوني من دعاءكم الصالح
لا تنسوا أهل غزة والعراق والمجاهدين من دعاءكم

#6 sky information

sky information

    عضو نشط

  • الأعضــاء
  • 337 مشاركة

تاريخ المشاركة 07 March 2007 - 11:44 AM

ممتاز جزاك الله خير

#7 ABUSAMRAH

ABUSAMRAH

    عضو

  • الأعضــاء
  • 22 مشاركة

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

مشكور وبارك الله فيك اخوي

حاولت اطبق بس ظهر لي هذا الخطا ممكن مساعده ORA-00439: feature not enabled: Objects
صورة

#8 omar-alreyati

omar-alreyati

    عضو مميز

  • الأعضــاء
  • 596 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 09 May 2007 - 08:27 AM

ما هي نسخة الاوراكل التي تطبق عليها

بالله عليكم لا تنسوني من دعاءكم الصالح
لا تنسوا أهل غزة والعراق والمجاهدين من دعاءكم