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

مالمشكلة في هذا البروسيجر

مغلق
بدأه الشعيبي في 25 ديسمبر 2002 · 5 رد · 768 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مالمشكلة في هاذا البروسيجر مع انه انشأ بدون اي اخطاء

 SQL>   create or replace procedure getsal
            (  v_empno    in    emp.empno%type,
               v_sal      out   emp.sal%type)
            as
            begin
                select sal
                into v_sal
                from emp
                where empno = v_empno;
          end;
SQL> /

Procedure created.

SQL> execute getsal(7788);
BEGIN getsal(7788); END;

      *
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'GETSAL'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
#2

الاستدعاء خطأ

يجب ان يكون عدد المعلمات في الاستدعاء مساوي لها اثماء الانشاء

#3

اخي العزيز باسم ماذا تقصد بالمعلمات ،،، ارجو التوضيح

#4

الأخ الكريم

لا تستغرب الخطأ واضح جداً ولكي أزيدك من الشعر بيت تقضل :

1- من المفاهيم الأساسية أن الفرق بين الاجراء Procedure و الدالة Functionهي أن الدالة تغود بقيمة أما الأجراء فانه يقوم بعمل شيئ ما دون العودة بقيمة ولذا كان الأسلم أن تقوم بانشاء دالة ترجع راتب الموظف .

2- سواء كانت دالة أم أجراء لابد أن بكون القيم الممرة الى الاجراء أو الدالة تساوي من حيث العدد والنوع تلك الموجودة في تغريف الدالة أو الاجراء وبنفس الترتيب وهذه هي مشكلتك حيث أن الاجراء الذي عرفته له متغيرين بينما مررت له في الاستدعاء متغير واحد فقط .

3- المتغيرات الاختيارية هي متعيرات يمكن تنقيذ الاجراء أو الدالة سواء مررت هذه المتعيرات أم لا و لجعل المتغير اختياري كمايلي

Procedure(ee in varchar2 default null)

الا جراء السابق يمكن تنفيذه بدون تمرير المتغير ee

أتمنى أن تكون النقاط واضحة

وفقك الله

حمود الحطامي

#5

اخي حمود اشكرك على الرد ،،،، ولكن حسب خبرتي البسيطة في الـ PLSQL انه بأمكانني ارجاع قيم من البروسيجر عن طريق البارميترات فهناك ثلاث انواع منها - لادخال قيمة - ولا اخراج قيمة - وللادخال والاخراج ,,, وللعلم فقط فهذا البروسيجر موجود بالنص في كتاب دورة اوركل الخاصة بالـ PLSQL

#6

السلام عليكم

اخي الشعيبي المشكلة ان الإستدعاء خاطئ يجب ان يكون عدد المتغيرات في جملة الإستدعاء مساوي لعدد المتغيرات في الإجراء وفي هذه الحالة قم بالتالي :-

في ال sqlplus :-

الطريقة الأولى :-

declare

my_result number;

begin

get_sal(7788,my_result);

dbms_output.put_line(my_result);

end;

الطريقة الثانية أيضا في ال sqlplus

variable my_result number;

execute getsal(7788,:my_result);

print my_result

ارجوا ان يكون هذا الحل مفيد والسلام :):)

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

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