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

ازاى باستخدام procedure احسب اكبر اداره فيها موظفين


romio2005

Recommended Posts

السلام عليكم
ضع جملة السيليكت هذه في بروسيجر ...

Select Deptno, Count(Empno) No_Of_Employees
 From Emp
Group By Deptno
Having Count(Empno) = (Select Max(Count(Empno)) From Emp Group By Deptno)



تحياتي

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

انا عملت الكود ده

create or replace procedure emp_no is
begin Select Department_id, Count(Employee_id) No_Of_Employees
 From Employees Having Count(Employee_id) = (Select Max(Count(Employee_id)) From Employees) Group By (Department_id);
end;


بس طلع رسائل خطأ

Warning: Procedure created with compilation errors.
Errors for PROCEDURE EMP_NO:

LINE/COL 	ERROR
3/1 	PLS-00428: an INTO clause is expected in this SELECT statement

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

CREATE OR REPLACE PROCEDURE emp_no
IS
  v_count     NUMBER;
  v_dept_id   employees.department_id%TYPE;
BEGIN SELECT   department_id, COUNT (employee_id) no_of_employees
      INTO v_dept_id, v_count
      FROM employees HAVING COUNT (employee_id) = (SELECT MAX (COUNT (employee_id))
                                    FROM employees) GROUP BY department_id;
END;



كان لازم تعرف variables ترجع فيها رقم الادارة وعدد الموظفين

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

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

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

جرب هذا الكود كده
select Department_id From Employees where Department_id =
Select max(Count(EMPLOYEE_ID))
From Employees Group By (Department_id);





مش شغال
انا عايز حد يفهم اللى انا عايزه
الكود بتاع الاخ سامح شغل بس انا عايزه يطبع رقم الاداره اللى فيها كبر عدد موظفين وكمان يقولى العد كام
رابط هذا التعليق
شارك

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


declare 
x varchar2(300);
begin 
select max(count(department_id)) from departments 
into x

Group By departmen_id;
en

d;

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

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


declare 
x varchar2(300);
begin 
select max(count(department_id)) from departments 
into x

Group By departmen_id;
en

d;



يااخى ما هذا الكود ده بيحسب عدد الادارات
انا اريد ان احسب اكبر اداره فيها اكبر عدد من الموظفين
وكمان اطبع اسم الاداره وعدد الموظفين

هل لا يوجد احد يستطي ايجاد هذا الكود ده الى الاخبراء
رابط هذا التعليق
شارك

Create Or Replace Procedure Max
Is
vn	NUmber;
vn2   Number;
vv	Varchar2(20);
Begin
Select Deptno, Count(Empno)
 Into vn,vn2
 From Emp
Group By Deptno
Having Count(Empno) = (Select Max(Count(Empno))
					 From Emp
					 Group By Deptno);
If Vn>0 Then
Select Dname
 Into vv
 From Dept
 Where Deptno=vn;
End If;
Dbms_Output.Put_Line(vn||'   '||vn2||'   '||vv);
End;

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

اخي معليش انا لسى متبدأ لكن حسب ما فهمت انك تريد طباعة نتائج الكود اللي كتبه الاخ سامح

طيب اذا كنت تشتغل ببيئة SQL plus او iSQL plus جرب الكود التالي

اولا ً اجريت بعض التعديلات على الكود باضافة باراميترات من نوع آوت كي تستطيع اخراج النتائج الى خارج البروسيجر

 create or replace procedure max_dept
  (p_dname out employees.department_id%type,
p_count out number)
is
begin
  SELECT department_id, COUNT (employee_id)
  INTO p_dname , p_count
  FROM employees
  HAVING COUNT (employee_id) = (SELECT MAX (COUNT (employee_id))FROM employees GROUP BY department_id)
  GROUP BY department_id;
 end;
/




ثانيا باستخدام هذا البرنامج تستطيع طباعة النتائج

declare
 v_dname employees.department_id%type;
 v_count number;
begin
  max_dept(v_dname,v_count);
  dbms_output.put_line('Department NO. '||v_dname||chr(10)||'Employees number '||v_count);
end;
/



اهم شي لا تنسى تفعل امر الطباعة من برنامج الsql plus

options
Environment
serveroutput
اختار custom ثم on


جربت الكودين و نجحت العملية 100% و الصورة بالمرفقات توضح النتيجة


بالتوفيق

post-95210-1260482080_thumb.jpg

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

اخي معليش انا لسى متبدأ لكن حسب ما فهمت انك تريد طباعة نتائج الكود اللي كتبه الاخ سامح

طيب اذا كنت تشتغل ببيئة SQL plus او iSQL plus جرب الكود التالي

اولا ً اجريت بعض التعديلات على الكود باضافة باراميترات من نوع آوت كي تستطيع اخراج النتائج الى خارج البروسيجر

 create or replace procedure max_dept
  (p_dname out employees.department_id%type,
p_count out number)
is
begin
  SELECT department_id, COUNT (employee_id)
  INTO p_dname , p_count
  FROM employees
  HAVING COUNT (employee_id) = (SELECT MAX (COUNT (employee_id))FROM employees GROUP BY department_id)
  GROUP BY department_id;
 end;
/




ثانيا باستخدام هذا البرنامج تستطيع طباعة النتائج

declare
 v_dname employees.department_id%type;
 v_count number;
begin
  max_dept(v_dname,v_count);
  dbms_output.put_line('Department NO. '||v_dname||chr(10)||'Employees number '||v_count);
end;
/



اهم شي لا تنسى تفعل امر الطباعة من برنامج الsql plus

options
Environment
serveroutput
اختار custom ثم on


جربت الكودين و نجحت العملية 100% و الصورة بالمرفقات توضح النتيجة


بالتوفيق




اخى العزيز habash1986
هذا ما كنت اتكمناه بالظبط شكرا جزيلا والى الامام ولا تحرمنا من اجاباتك المتميزه
رابط هذا التعليق
شارك

السلام على من اتبع الهدى

Select Department_id, Count(Employee_id) No_Of_Employees
From Employees
Group By Department_id
Having Count(Employee_id) = (Select Max(Count(Employee_id)) From Employees Group By Department_id)


جرب كد وانشالله شغال
الكود بتاع الاخ PALI.ORACLE

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

العفو اخي و ما عملنا غير الواجب و اي سؤال تاني انا حاضر

بس سؤال اسمحلي , لك الحرية في الاجابة عليه

لماذا كنت تريد هذا الكود ؟



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

العفو اخي و ما عملنا غير الواجب و اي سؤال تاني انا حاضر

بس سؤال اسمحلي , لك الحرية في الاجابة عليه

لماذا كنت تريد هذا الكود ؟



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



بالتوفيق يا رب , و انا ايضا انهيت كورس الsql و ال plsql و بعد يومين ابدأ الفورمز ان شاء الله

شد حيلك , و عقبال الشغل ان شاء الله

و خلال هذه الفترة ( نصيحة اخوية ان شاء الله ) حاول تراجع تمارين الكتاب و تحلها , تدور بالنت على حلول لمشاكلك , و هذا ما افعله حاليا ً كي احسن نفسي في الاوراكل

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

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

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

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

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

×   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.

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

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

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