פעם ראשונה שאני רושם פרוצדורה ופונקציה ב SQL , יש לי בעיות סינטקס כאשר אני מריץ את זה ב אורקל לייב ,
להלן התרגיל והפתרון מתחתיו :
יש לכתוב Package בשם PKG_EMP אשר תכיל:
function get_no_of_children(emp_no number)
procedure get_emp_det(above_avrage char(1),year varchar2(4))* ניתן יהיה לקרוא לפונקציה רק מתוך ה-Package
מטרת הפונקציה – להחזיר את מס' הילדים לעובד.
מטרת הפרוצדורה -
* לבדוק את ממוצע המשכורות של כלל העובדים
** להכניס לטבלת emp_details את פרטי העובדים מטבלת emp, כאשר:
1. אם הפרמטר above_avrage = Y אז להוסיף את התנאי שמשכורת העובד גדולה שווה לממוצע
2. הפרמטר YEAR מכיל שנה ב-4 ספרות. יש לשלוף רק עובדים שתאריך הקליטה שלהם גדול שווה
לשנה.
לכל רשומה שעונה על התנאי, יש לקרוא לפונקציה get_no_of_children בשביל לקבל את מספר הילדים.
את התוצאות יש להכניס לטבלה.
להלן הטבלאות שיצרתי לפני :
emp, אשר תכיל פרטי עובדים.
מבנה הטבלא: emp_no number ( מספר עובד )
emp_name varchar2(50) ( שם עובד )
hier_date date ( תאריך קליטה )
salary number ( משכורת )
emp_children, אשר תכיל פרטי ילדי העובדים.
מבנה הטבלא: child_no number ( מספר ילד )
emp_no number ( מספר עובד )
name_name varchar2(50) ( שם ילד )
birthdate date ( תאריך לידה )
emp_details.
מבנה הטבלא: emp_no number ( מספר עובד )
emp_name varchar2(50) ( שם עובד )
hier_date date ( תאריך קליטה )
salary number ( משכורת )
no_of_sons number ( מספר ילדים )
והפתרון שרשמתי :
http://paste.ofcode.org/q3KW2VTfUPSHUQ6cCXY6vb
השגיאות :
Errors: PACKAGE PKG_EMP Line: 3 PLS-00103: Encountered the symbol "(" when expecting one of the following: := ) , default varying character large The symbol ":=" was substituted for "(" to continue. Line: 3 PLS-00103: Encountered the symbol "(" when expecting one of the following: := . ) , @ % default character The symbol ":=" was substituted for "(" to continue. Line: 6 PLS-00103: Encountered the symbol "CREATE"
|
עבדתי לפי המדריך :
https://www.tutorialspoint.com/plsql/plsql_procedures.htm
תודה מראש על העזרה
מילוי סקרים בתשלום למי שמעונין ,
משלם בזמן וקל להגיע ליעד :
https://goo.gl/EJh6V2