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

ماهو مشكله هذا Procedure


mostfa_future

Recommended Posts

CREATE OR REPLACE PROCEDURE ADD_EMPLOYEE
(FIRST_NAME VARCHAR2 :='FIRST_NAME',EMPLOYEE_ID number ,LAST_NAME VARCHAR2 :='LAST_NAME' ,
EMAIL VARCHAR2 :='email' ,JOB_ID VARCHAR2 := ' SA_REP ',MANAGER_ID number := 145,SALARY number:= 1000,
COMMISSION_PCT number:= 0,DEPARTMENT_ID number := 30,HIRE_DATe date :=sysdate)
IS
BEGIN INSERT INTO employees (EMPLOYEE_ID, FIRST_NAME, LAST_NAME , EMAIL,JOB_ID ,MANAGER_ID ,SALARY,
COMMISSION_PCT, DEPARTMENT_ID,HIRE_DATe)
VALUES (EMPLOYEES_SEQ .NEXTVAL, FIRST_NAME,LAST_NAME,EMAIL,JOB_ID ,MANAGER_ID,SALARY ,
COMMISSION_PCT,DEPARTMENT_ID,HIRE_DATe);
END ; 


begin ADD_EMPLOYEE (FIRST_NAME=>' TRAINING ');

end;

رابط هذا التعليق
شارك

can you , we display the error message generated
to faciltate its localisation
thanks



please my friend use the 'code' option when you write a code like this
just for the lisibilite
thanks


but I think that the problem is here:
ADD_EMPLOYEE (FIRST_NAME=>' TRAINING ');

because
when you have define your procedure you have passed it more than one paremeter
and when you have call it you have just specifie one parameter


but I want seen the error message please
thanks

تم تعديل بواسطة rachid_to_dba
رابط هذا التعليق
شارك

السلام عليكم

في جمله ال INSERT في لخبطهفي ترتيب الاعمده عامه قارن بين ال Procedure ده وبتاع حضرتك ومش لازم تزود عمود ال id لانك بتملاه عن طريق ال seq

CREATE OR REPLACE PROCEDURE ADD_EMPLOYEE
(FIRST_NAME VARCHAR2:='FIRST_NAME',LAST_NAME VARCHAR2:='LAST_NAME',
EMAIL VARCHAR2:='e',HIRE_DATE date:=sysdate,JOB_ID VARCHAR2:='SA_REP',SALARY number:=1000,
COMMISSION_PCT number:=0,MANAGER_ID number:=145,DEPARTMENT_ID number:=30)
IS
BEGIN INSERT INTO hr.employees(EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,HIRE_DATE,JOB_ID,SALARY,COMM
ISSION_PCT
,MANAGER_ID,DEPARTMENT_ID)
VALUES (hr.EMPLOYEES_SEQ.NEXTVAL,FIRST_NAME,LAST_NAME,EMAIL,HIRE_DATE,JOB_ID,SALARY,
COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID);
END ; 
)



جرب كده

رابط هذا التعليق
شارك

السلام على من اتبع الهدى
rachid_to_dba
اخى الفاضل كلامك صح المشكله مش فى PROCEDURE
مشكله فى الانفوك ولكان انا جميع parameter
يوجد فيه قيمه مبتدائيه مفروض يشتغل مجرد اما اعمل انفوك من غير وضع اى قيمه داخل parameter

ADD_EMPLOYEE (FIRST_NAME=>' TRAINING ');
*

ERROR at line 2:
ORA-06550: line 2, column 1:
PLS-00306: wrong number or types of arguments in call to 'ADD_EMPLOYEE'
ORA-06550: line 2, column 1:
PL/SQL: Statement ignored
sara gamal
اختى الفاضله
المشكله مش فىPROCEDURE
المشكله فى الانفوك ونا جربت PROCEDURE بتاعك Warning: Procedure created with compilation errors.
وجزاكم الله خير

رابط هذا التعليق
شارك

السلام عليكم
انا جربت كود حضرتك وطلع نفس الخطأ الحضرتك كاتبه وجربت اعدل فيه واشتغل عادى والقيمه دخلت في الجدول
ده الكود وجربته تانى واشتغل يمكن المشكله في الكود الاول في عمليه ال copy وال paste

CREATE OR REPLACE PROCEDURE ADD_EMPLOYEE
(FIRST_NAME VARCHAR2:='FIRST_NAME',LAST_NAME VARCHAR2:='LAST_NAME',
EMAIL VARCHAR2:='e',HIRE_DATE date:=sysdate,JOB_ID VARCHAR2:='SA_REP',SALARY number:=1000,
COMMISSION_PCT number:=0,MANAGER_ID number:=145,DEPARTMENT_ID number:=30)
IS
BEGIN INSERT INTO hr.employees(EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,HIRE_DATE,JOB_ID,SALARY
,COMMISSION_PCT
,MANAGER_ID,DEPARTMENT_ID)
VALUES (hr.EMPLOYEES_SEQ.NEXTVAL,FIRST_NAME,LAST_NAME,EMAIL,HIRE_DATE,JOB_ID,SALARY,
COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID);
END; 

execute ADD_EMPLOYEE (FIRST_NAME=>'TRAINING');



وده الريكورد الدخل في الجدول
http://www.arb-up.com/p1eozlmyt3cc/code.bmp.html

تم تعديل بواسطة sara gamal
رابط هذا التعليق
شارك

انا كل العملته انى رتبت الاعمده في جمله ال insert وال parameter
واشتغل على كده
بس مظنش ان ده كان سبب المشكله لانى نفذت كود مشابهه وملخبطه ترتيب الاعمده واتنفذ عادى جدا

CREATE OR REPLACE PROCEDURE add_dept(name varchar2:='Unknown',loc number DEFAULT 1700)
IS
BEGIN INSERT INTO hr.departments(department_id,location_id,department_name) VALUES (hr.departments_seq.NEXTVAL,loc,name);
END add_dept;

EXECUTE add_dept (loc =>1200)


فمعرفش بصراحه وياريت لو حد عنده فكره يوضحها عشان نعرف

رابط هذا التعليق
شارك

جزاك الله خير اشتغل فعلان
ولكان ارجو توضيح الخطاء فى الكود الاول



السلام عليكم اولا
اسف ع التاخير في الرد والحمد الله ان الاخت sara gamal حلت الموضوع


بس الغلط وينو ؟ ركز

انت قلتلي من قبل
السلام على من اتبع الهدى
rachid_to_dba
اخى الفاضل كلامك صح المشكله مش فى PROCEDURE
مشكله فى الانفوك ولكن انا جميع parameter
يوجد فيه قيمه مبتدائيه مفروض يشتغل مجرد اما اعمل انفوك من غير وضع اى قيمه داخل parameter

وانا موافق معاك بس خلينا نشوف the defenition of your procedure

CREATE OR REPLACE PROCEDURE ADD_EMPLOYEE


(FIRST_NAME VARCHAR2 :='FIRST_NAME',
EMPLOYEE_ID number,
LAST_NAME VARCHAR2 :='LAST_NAME' ,
EMAIL VARCHAR2 :='email' ,JOB_ID VARCHAR2 := ' SA_REP ',MANAGER_ID number := 145,SALARY number:= 1000,
COMMISSION_PCT number:= 0,DEPARTMENT_ID number := 30,HIRE_DATe date :=sysdate)




وهلا خلينا نشوف the call of your procedure

ADD_EMPLOYEE (FIRST_NAME=>' TRAINING ')




انا اقول انو الغلط في EMPLOYEE_ID number اذاركزت هيذا ما عندو قيمة مبداية
ثم اصلا في هذا المستوى من procedure لا نعرف بعد قيمته لانها متعلقة بقيمة اللي قبلو في الجدول

ومن شان هيك لما وصل لل call of your procedure صحيح انو وجد قيم مبدأية لبقية البارامترات
لكن EMPLOYEE_ID فما عندو قيمة ابتدائية .


اما INSERT لم تكن خاطئة وليس مهم ترتيب الاعمدة حسب الجدول وانما
المهم اننا نحترم الترتيب بين اسم العمود في INTO وما يقابله من قيمة في VALUES


وارجو سماع راييكما فيما قلت

سلام عليكم

تم تعديل بواسطة rachid_to_dba
رابط هذا التعليق
شارك

السلام على من اتبع الهدى اخى الفاضل بعض التحيه
لالاسف كلامك بردك غلاض
لان فى بناء هذا الجدول هو معتمد علىEMPLOYEES_SEQ
لانه PRIMARY KEY
وانا استخدمت نفس الطريقه ومش محتاج اعرف قيم الارقام الى فى جدول لان EMPLOYEES_SEQ
مش ممكن تتكرار
ويارت تركز فى كود sara gamal
لان اشتغل فعلا بس المشكله انو مفيش فرق بينه وبين الكود بتاعى او احنا مش شايفن الفرق ده
و شكراا على اهتمامك

رابط هذا التعليق
شارك

السلام على من اتبع الهدى اخى الفاضل بعض التحيه
لالاسف كلامك بردك غلاض
لان فى بناء هذا الجدول هو معتمد علىEMPLOYEES_SEQ
لانه PRIMARY KEY
وانا استخدمت نفس الطريقه ومش محتاج اعرف قيم الارقام الى فى جدول لان EMPLOYEES_SEQ
مش ممكن تتكرار
ويارت تركز فى كود sara gamal
لان اشتغل فعلا بس المشكله انو مفيش فرق بينه وبين الكود بتاعى او احنا مش شايفن الفرق ده
و شكراا على اهتمامك


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

اهلا وسهلا ومرحبا فيك اخي mostfa_future

فعلا زي ما قلت تمام
معناتو
لانو EMPLOYEE_ID لا يحتاج قيمة ابتدائية (اصلا اذا حاولنا فعل هذا سنخرق قوانين Primary Key)

واكيد تمام مثل ما اتفضلت راح ياخذ قيمتو من خلال EMPLOYEES_SEQ

من شان هيك ما كان لازم تحطو براميتر في the definition of your procedure
واذا ركزت سواء بالكود الاول او حتى الثاني اللي حاطيتهن الاخت sara gamal

فراح تتنبه لانو في the definition of the procedure ما عملو EMPLOYEE_ID
وهذا منطقي لانو مش احنا اللي نحدد لو قيمتو الابتدائية بس هو زي ما قلنا سابقا متعلق ب EMPLOYEES_SEQ

وهيذا هو الفرق بين your procedure و the procedure of sara gamal
ومن شان هيك الحل تبع الاخت صارة اشتغل بعكس your procedure
راح اشرح اكثر
احنا شو هدفنا من ال procedure اصلا
هدفنا من procedure اننا نقوم بتمرير معطيات من شان نستخدمها داخل procedure من شان بالاخير نقوم بعمل معين اي for to complete a specific action
فاذا اذا EMPLOYEE_ID ممكن حسابو ومعرفتو من غير ما نمرره
واكثر من هيذا ،قيمتو بتعتمد ع شي ثاني ،فاكيد انو ع مستوى the head of the procedure
احنا ما ممكن نتخيل شو هالشي .
ومن شان هيك مثل هته البراميترات لا توضع في the head of the procedure

thanks very match
وانا مستني تعليقك ان شاء الله تم تعديل بواسطة rachid_to_dba
رابط هذا التعليق
شارك

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

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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