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

سؤال فى ال Procedure

مغلق
بدأه shukry في 30 أبريل 2006 · 6 رد · 1,094 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عندما قرأت عن ا Procedure فى الأوراكل وجدنها أنها لابد أن ترجع قيمة واحدة و لابد أن يكون فى متغير ، بعكس ال Procedure فى ال SQl Server ممكن أن يرحع أكثر من صف ...

فهل حل للأوراكل ؟؟

#2

هناك ال out parameters

3424.gif
#3

يمكنك أن تستعمل out parameters أو أن تقوم بإرجاع plsql Table إذا كان المتحولات التي تريد إرجاعها من نمط واحد و هو مشابه لمفهوم المصفوفات بلغات البرمجة ...

#4

ممكن تعطى مثال أخى Informat

#5

ممكن مثال من الأخوة الأفاضل

#6

عذراً أخي على التأخر ..

يمكنك استخدام out parameters كما يلي :

CREATE OR REPLACE PROCEDURE query_emp
(p_id IN employees.employee_id%TYPE,
p_name OUT employees.last_name%TYPE,
p_salary OUT employees.salary%TYPE,
p_comm OUT employees.commission_pct%TYPE)
IS
BEGIN
SELECT last_name, salary, commission_pct
INTO p_name, p_salary, p_comm
FROM employees
WHERE employee_id = p_id;
END query_emp;

و عندها يمكنك ااستدعاؤها بالشكل التالي :

VARIABLE g_name VARCHAR2(25)
VARIABLE g_sal NUMBER
VARIABLE g_comm NUMBER
EXECUTE query_emp(171, :g_name, :g_sal, :g_comm)
PRINT g_name
#7
يقصد بها هو انشاء اجراء معين على قاعدة البيانات بحيث تطبق تعليمة معينة او تستعلم تعليمة معينة

قاعدة انشاء الProcedure

CODECREATE [OR REPLACE] PROCEDURE procedure_name
   [ (parameter [,parameter]) ]
IS
   [declaration_section]
BEGIN
   executable_section
[EXCEPTION
   exception_section]
END [procedure_name];


ويمكن ان نشرحها بالشكل التالي

CREATE [OR REPLACE] PROCEDURE procedure_name

هنا نقوم بعمل او تبديل الProcedure يعني نكتب CREATE OR REPLACE ثم نكتب PROCEDURE
ثم نكتب اسم الPROCEDURE وفائدة الREPLACE هنا لتبديل الPROCEDURE القديم بالPROCEDURE الجديد الذي نريد انشائه


[ (parameter [,parameter]) ]
هذه الجزئية هي عبارة الباراميتر الداخل او الخارج من البروسيجر حيث عند استخدام الباراميتر وتعريف نوعه نستخدم ثلاث حالات وهي 

IN وتعني قيمة الباراميتر الداخله للبروسيجر والغير مرتجعه بها القيمة .

OUT وتعني قيمة الباراميتر الخارجة او الناتجة من البروسيجر

IN OUT وهي القيم الداخلة والخارجة حيث يدخل الباراميتر بقيمة ويرجع بقيمة اخرى

ونحن نعرف ان البروسيجر ترجع القيمة باسم البروسيجر نفسه



IS

وتعني التهيئة 


[declaration_section]
هنا نعرف الباراميتر المختلفة والتي نستطيع استخدامها للبروسيجر

BEGIN
executable_section
هنا نهئ البروسيجر لنبدأ بعملية ال SELECT او القايم بجمع او طرح او غير ذلك

[EXCEPTION
exception_section]
تستخدم في حال لم ينفذ الشرط 


END [PROCEDURE_name];

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

مثال على ماسبق


CODECREATE OR REPLACE Procedure UpdateCourse
  ( name_in IN varchar2 )
IS
   cnumber number;

   cursor c1 is
   select course_number
     from courses_tbl
     where course_name = name_in;

BEGIN

open c1;
fetch c1 into cnumber;

if c1%notfound then
    cnumber := 9999;
end if;

insert into student_courses
( course_name,
 course_number)
values ( name_in,
               cnumber );

commit;

close c1;

EXCEPTION
WHEN OTHERS THEN
     raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
END;

هذا البروسيجر يأخذ رقم الكورس ويضيفه الى جدول الطلاب

ايهاب وجدى

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

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