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

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

صورة
- - - - -

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


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

#1 mostfa_future

mostfa_future

    عضو مميز

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

تاريخ المشاركة 06 December 2009 - 01:16 AM

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;

لا تحسبن المجد تمرا أنت اكله *** لن تبلغ المجد حتى تلعق الصبر


صورةصورة


#2 rachid_to_dba

rachid_to_dba

    مشترك

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

تاريخ المشاركة 06 December 2009 - 02:15 AM

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, 06 December 2009 - 02:42 AM.


ان شاء الله ... باذن الله ... اكيد سنصل... يارب


#3 sara gamal

sara gamal

    عضو نشط

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

تاريخ المشاركة 06 December 2009 - 04:02 AM

السلام عليكم

في جمله ال 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 ;
)


جرب كده

#4 mostfa_future

mostfa_future

    عضو مميز

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

تاريخ المشاركة 06 December 2009 - 05:40 PM

السلام على من اتبع الهدى
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.
وجزاكم الله خير

لا تحسبن المجد تمرا أنت اكله *** لن تبلغ المجد حتى تلعق الصبر


صورةصورة


#5 sara gamal

sara gamal

    عضو نشط

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

تاريخ المشاركة 06 December 2009 - 07:52 PM

السلام عليكم
انا جربت كود حضرتك وطلع نفس الخطأ الحضرتك كاتبه وجربت اعدل فيه واشتغل عادى والقيمه دخلت في الجدول
ده الكود وجربته تانى واشتغل يمكن المشكله في الكود الاول في عمليه ال 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.co...c/code.bmp.html

تم التعديل بواسطة sara gamal, 06 December 2009 - 07:56 PM.


#6 mostfa_future

mostfa_future

    عضو مميز

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

تاريخ المشاركة 06 December 2009 - 11:21 PM

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

لا تحسبن المجد تمرا أنت اكله *** لن تبلغ المجد حتى تلعق الصبر


صورةصورة


#7 sara gamal

sara gamal

    عضو نشط

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

تاريخ المشاركة 07 December 2009 - 04:12 AM

انا كل العملته انى رتبت الاعمده في جمله ال 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)

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

#8 rachid_to_dba

rachid_to_dba

    مشترك

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

تاريخ المشاركة 08 December 2009 - 03:45 AM

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



السلام عليكم اولا
اسف ع التاخير في الرد والحمد الله ان الاخت 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, 08 December 2009 - 03:50 AM.


ان شاء الله ... باذن الله ... اكيد سنصل... يارب


#9 mostfa_future

mostfa_future

    عضو مميز

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

تاريخ المشاركة 09 December 2009 - 02:55 AM

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

لا تحسبن المجد تمرا أنت اكله *** لن تبلغ المجد حتى تلعق الصبر


صورةصورة


#10 rachid_to_dba

rachid_to_dba

    مشترك

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

تاريخ المشاركة 09 December 2009 - 05:33 AM

السلام على من اتبع الهدى اخى الفاضل بعض التحيه
لالاسف كلامك بردك غلاض
لان فى بناء هذا الجدول هو معتمد على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, 09 December 2009 - 06:07 AM.


ان شاء الله ... باذن الله ... اكيد سنصل... يارب


#11 mostfa_future

mostfa_future

    عضو مميز

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

تاريخ المشاركة 09 December 2009 - 06:21 AM

السلام على من اتبع الهدى
اخى الكريم صدقت فعلا كلامك صح و بعض التجربه
جزاك الله خير
اشكرك على اهتمامك

لا تحسبن المجد تمرا أنت اكله *** لن تبلغ المجد حتى تلعق الصبر


صورةصورة