الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استفسار عن بعض أوامر الاوراكل

مغلق
بدأه أميرة في 15 يوليو 2003 · 10 رد · 3,695 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

هاذي أول مشاركة ليا معاكم وياريت تتقبلوني ضيفة معاكم

أول أمر اللي هو (CURSOR)

وثاني أمر متى نستخدم ال (DBMS_OUTPUT.PUT_LINE)

ومتى نستخدم الامر (DBMS_OUTPUT.PUT)

وشكرا ,,,

#2

بسم الله الرحمن الرحيم

وعليكم السلام ورحمة الله وبركاته

مرحبا بكي اختي الفاضله وحياكي الله في المنتدى

بالنسبة للCursor فان الاخ ابو أبراهيم جزاه الله خيرا قد شرح بما فيه الكفاية

في دروسه والتي ارفقها في هذا الرد بصيغة ملف PDF

بالنسبة للفرق بين PUT و PUT_LINE

طبعا جميعها كما هو معروف للطباعة على شاشة Sql Plus

ولكن باستخدام PUT_LINE يقوم المبرمج بوضع كامل المعلومات والخاصة الى السطر في Buffer مرة واحده

ملاحظة:

Buffer المقصود به الذاكرة المؤقته في RAM فعندما تقومين بالكتابة في برنامج الورد مثلا قبل ان تقومي بحفظه فان ما تكتبيه يخزن في Buffer

اما باستخدام PUT فيمكن وضع المعلومات الخاصة بالسطر على شكل متتالي وذلك باستدعائها اكثر من مرة

ولكن الملاحظ ان put لا تعلم متى تنتهي من وضع البيانات في Buffer الا بعد اعطاء امر سطر جديد مثل

DBMS_OUTPUT.NEW_LINE;

بمعنى لن تطبع لكي ما كتبتيه الا بارفاق السطر السابق

حيث ان وظيفة هذا السطر هي اعطاء Buffer ما يسمى end-of-line marker

وهي تمثل العلامة التي يستطيع من خلالها PUT فهم انه حان وقت كتابة السطر الذي توجد معلوماته داخل Buffer

لو تلاحظي بأن PUT_LINE تقوم بنفس العمل عدا انها تقوم بالحاق end-of-line marker خلف سطرها مباشرة

مثال ذلك لو اردنا طباعة كلمة Smart Developer

فباستخدام PUT_LINE تكون هكذا

في البداية يجب اتاحة عمل PACKAGE عن طريق

set serveroutput on

ثم انتر بعد هذا السطر

المثال كاملا

set serveroutput on
BEGIN
DBMS_OUTPUT.PUT_LINE('SMART DEVELOPER');
END;

لكتابة السطر السابق بطريقة put

BEGIN
DBMS_OUTPUT.PUT('SMART DEVELOPER');
DBMS_OUTPUT.NEW_LINE;
END;

اذا لم يكتب سطر

DBMS_OUTPUT.NEW_LINE;

فما حيطلع اي شي في الناتج

طريقة اخرى

BEGIN
DBMS_OUTPUT.PUT('SMART ');
DBMS_OUTPUT.PUT('DEVELOPER');
DBMS_OUTPUT.NEW_LINE;
END;

وبالتوفيق ان شاء الله

pl_sql_lesson.zip

#3

السلام عليكم ورحمة الله

وشكر واااايد يااخ Smart Dev وجزاك الله ألف خير.

#4

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

ممكن أعرف الفرق بين الأمرين Truncate و Delete

انا اللي أعرفه انه أول فرق

ان ال Truncate تقوم بعمل حفظ تلقائي (Commit)ولا يمكن التراجع عنها من خلال الأمر (Rollback)

فهل يوجد فرق ثاني أم لا

والسؤال الثاني

ممكن أعرف فائدة الأمر Decode :

وشكرا ,,,

#5

بسم الله الرحمن الرحيم

السؤال الثاني : هي تتيح لك عملية الاخيار بين عدة خيارات مثل :

select job , salary

decode ( job , 'ANALYST' , salary*1.1,

                     'CLERK',salary*1.15,

                     'MANAGER',salary*1.20,

                                      salary)

             salary

from emp;

من هذا المثال نلاحظ أنك تقول إذا كان عمل الموظف ANALYST فأجر العملية التالية : salary*1.1

وإذا كان الموظف عمله CLERK فأجر العملية التالية : salary*1.15

وإذا كان الموظف عمله MANAGER فأجر العملية التالية : salary*1.20

أو في النهاية اطبع الراتب الذي هو الـ salary

وكل هذه العمليات تجرى على جدول الموظفين emp

#6

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

شكرا يااخ مبارك على اجابتك

بس ممكن أعرف بالنسبة للأمر Decode

هل هو بس لما نعرض البيانات ولا بإمكاني أضيفو كحقل للجدول

وشكرا ,,,

#7

السلام عليكم

الأخت أميرة

بالنسبة للفرق بين Delete و Truncate

فالفرق الأول: زي ما كتبت بالضبط مع تغيير بسيط وهو أن الأمر Delete هو من أوامر ال DML اي انه يمكن عمل rollback أو Commit أما Truncate فهو لا يعمل لا rollback ولا Commit سواء كتبها المستخدم ام كانت تلقائية من Oracle وهو من أوامر DDL أي ان التغيير يحصل على ال Structure مباشرة وهذا هو الفرق الثاني كما سأشرحه في النقطة الثانية.

أما الفرق الثاني: يوجد في Oracle حاجة اسمها High Water Mark وهي من اسمها تعني انه كلما اضيفت سجلات الى الجدول فإن هذة العلامة تتحرك لتشير الى آخر Block لهذا الجدول ولكن عند الحذف باستخدام الامر Delete فهي لا ترجع أبدا أما عند استخدام الأمر Truncate فإنها ترجع لتشير الى أول Block لهذا الجدول اي انه حصل تغيير على Table Structure وهذا ما قصدته في الفرق الأول

أبو قصي

#8

وعليكم السلام ورحمة الله

شكرا يااخ أبو قصي على مساعدك

#9

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

ممكن اعرف الفرق بين بعض انواع البيانات:

النوع الاول Char

النوع الثاني Nchar

النوع الثالث Varchar2

النوع الرابع Nvarchar2

النوع الخامس Varchar

وشكرا ,,,

#10

وعليكم السلام

بالنسبة للامر char لتخزين عدد ثابت من الاحرف والحد الاقصى له 2000 حرف

اما

ال nchar نفس الشي بس الحد الاقصى لطول الاحرف يتم تحديده بواسطة

الاعداد الخاص بالاحرف داخل قاعدة البيانات

بالنسبة ل varchar2 لتخزين بيانات حرفية متنوعة الطول والحد الاقصى هو 4000 حرف

ال nvarchar2 نفس الشي بس الحد الاقصى لطول الاحرف يتم تحديده بواسطة الاعداد الخاص بالاحرف داخل قاعدة البيانات

أما ال varchar نفس نوع البيانات char

(يعني ان ال varchar2 تحفظ عدد الخانات التي وضعتيها أما ال nvarchar2 تحفظ عدد الخانات المكتوبة في الجدول وهذه افضل لأنها لاتسبب هدر للذاكرة

وبالتوفيق

#11

السلام عليكم ورحمة الله وبركاته

شكرا يااخ Stone

على مساعدك وجزاك الله الف خير

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…