SELECT XMLElement("COUNTRY", XMLElement("NAME", NAME), XMLElement("ID", ID)) AS "RESULT" FROM CITIZENSHIP; SELECT XMLElement("COUNTRY", XMLForest(ID, NAME)) AS "RESULT" FROM CITIZENSHIP; SELECT XMLElement("BRANCH", XMLForest(ID, NAME)) AS "RESULT" FROM BRANCHES; 3Kazakhstan 1Russia 2Ukraine 1Dnevnoe 2Vechernee 3Zaochnoe SELECT XMLConcat ( ( SELECT XMLAgg(XMLElement("CITIZENSHIP", ( SELECT XMLAgg(XMLElement("COUNTRY", XMLForest(ID,NAME))) FROM CITIZENSHIP) ) )from dual ), ( SELECT XMLAgg(XMLElement("DUAL1", XMLForest(DUMMY))) FROM dual ) ) AS "RESULT" FROM dual; SET pagesize 50000; SET long 50000; SELECT XMLConcat( XMLElement("CITIZENSHIP", (SELECT XMLAgg(XMLElement("COUNTRY", XMLForest(ID,NAME))) FROM CITIZENSHIP)), XMLElement("BRANCHES", (SELECT XMLAgg(XMLElement("BRANCH", XMLForest(ID,NAME))) FROM CITIZENSHIP)), XMLElement("SUBJECTS", (SELECT XMLAgg(XMLElement("SUBJECT", XMLForest(ID,NAME))) FROM SUBJECTS)), XMLElement("SPECIALTIES", (SELECT XMLAgg(XMLElement("SPECIALTY", XMLForest(ID,NAME,CODE))) FROM SPECIALTIES)), XMLElement("DEPARTMENT_TYPES", (SELECT XMLAgg(XMLElement("DEPARTMENT_TYPE", XMLForest(ID,NAME))) FROM DEPARTMENT_TYPES)), XMLElement("PROGRAMSUBJECTS", (SELECT XMLAgg(XMLElement("PROGRAMSUBJECT", XMLForest(ID,PROGRAM_ID,SUBJECT_ID,THRESHOLD_MARK,PS_YEAR))) FROM PROGRAMSUBJECTS)), XMLElement("EXAMS", (SELECT XMLAgg(XMLElement("EXAM", XMLForest(ID,ENTRANT_ID,SUBJECT_ID,MARK,CODE))) FROM EXAMS WHERE ROWNUM <= 10)), XMLElement("ORDERS_ITEMS", (SELECT XMLAgg(XMLElement("ORDER_ITEM", XMLForest(ID,NAME,ITEM_NUMBER))) FROM ORDERS_ITEMS)), XMLElement("DEPARTMENTS", (SELECT XMLAgg(XMLElement("DEPARTMENT", XMLForest(ID,NAME,ABBR,DEPARTMENT_ID,DEPARTMENT_TYPE_ID,CODE))) FROM DEPARTMENTS)), XMLElement("PROGRAMS", (SELECT XMLAgg(XMLElement("PROGRAM", XMLForest(ID,SPEC_ID,BRANCH_ID))) FROM PROGRAMS)), XMLElement("DEPARTMENTPROGRAM", (SELECT XMLAgg(XMLElement("DEPPROG", XMLForest(ID,PROGRAM_ID,DEPARTMENT_ID))) FROM DEPARTMENTPROGRAM)), XMLElement("COMMANDMENTS", (SELECT XMLAgg(XMLElement("COMMANDMENT", XMLForest(ID,ENTRANT_ID,PROGRAM_ID,ORDER_ID,PRE_COMMANDMENT,COMMANDMENT_YEAR,CODE,DEPARTMENT_ID,COMMIT_DATE,CREATE_DATE))) FROM COMMANDMENTS)), XMLElement("PRIORITIES", (SELECT XMLAgg(XMLElement("PRIORITY", XMLForest(ID,ENTRANT_ID,PROGRAM_ID,PRIORITY))) FROM PRIORITIES WHERE ROWNUM <= 10)), XMLElement("ACCEPTANCE_PLANS", (SELECT XMLAgg(XMLElement("ACCEPTANCE_PLAN", XMLForest(ID,PROGRAM_ID,AMOUNT,PLAN_YEAR,DEPARTMENT_ID))) FROM ACCEPTANCE_PLANS)), XMLElement("ENTRANTS", (SELECT XMLAgg(XMLElement("ENTRANT", XMLForest(ID,HUMAN_ID,ORIGINAL,MEDAL,ALLOWANCE,ENTRY_YEAR))) FROM ENTRANTS WHERE ROWNUM <= 10)), XMLElement("HUMANS", (SELECT XMLAgg(XMLElement("HUMAN", XMLForest(ID,NAME,SURNAME,SECOND_NAME,BIRTH_DATE,SEX,CITIZENSHIP_ID))) FROM HUMANS WHERE ROWNUM <= 10)) ) FROM dual; CREATE OR REPLACE PACKAGE ALLDATA IS TYPE rowGetSubjects IS RECORD( l_id SUBJECTS.ID%TYPE, l_name SUBJECTS.NAME%TYPE ); TYPE rowGetSpecialties IS RECORD( l_id SPECIALTIES.ID%TYPE, l_name SPECIALTIES.NAME%TYPE, l_code SPECIALTIES.CODE%TYPE ); TYPE rowGetDepartmentTypes IS RECORD( l_id DEPARTMENT_TYPES.ID%TYPE, l_name DEPARTMENT_TYPES.NAME%TYPE ); TYPE rowGetProgramSubjects IS RECORD( l_id PROGRAMSUBJECTS.ID%TYPE, l_program_id PROGRAMSUBJECTS.PROGRAM_ID%TYPE, l_subject_id PROGRAMSUBJECTS.SUBJECT_ID%TYPE, l_threshold_mark PROGRAMSUBJECTS.THRESHOLD_MARK%TYPE, l_ps_year PROGRAMSUBJECTS.PS_YEAR%TYPE ); TYPE rowGetExams IS RECORD( l_id EXAMS.ID%TYPE, l_entrant_id EXAMS.ENTRANT_ID%TYPE, l_subject_id EXAMS.SUBJECT_ID%TYPE, l_mark EXAMS.MARK%TYPE, l_code EXAMS.CODE%TYPE ); TYPE rowGetOrderItems IS RECORD( l_id ORDERS_ITEMS.ID%TYPE, l_name ORDERS_ITEMS.NAME%TYPE, l_full_text ORDERS_ITEMS.FULL_TEXT%TYPE, l_item_number ORDERS_ITEMS.ITEM_NUMBER%TYPE ); TYPE rowGetDepartments IS RECORD( l_id DEPARTMENTS.ID%TYPE, l_name DEPARTMENTS.NAME%TYPE, l_department_id DEPARTMENTS.DEPARTMENT_ID%TYPE, l_department_type_id DEPARTMENTS.DEPARTMENT_TYPE_ID%TYPE, l_code DEPARTMENTS.CODE%TYPE, l_abbr DEPARTMENTS.ABBR%TYPE ); TYPE rowGetDepartmentProgram IS RECORD( l_id DEPARTMENTPROGRAM.ID%TYPE, l_program_id DEPARTMENTPROGRAM.PROGRAM_ID%TYPE, l_department_id DEPARTMENTPROGRAM.DEPARTMENT_ID%TYPE ); TYPE rowGetBranches IS RECORD( l_id BRANCHES.ID%TYPE, l_name BRANCHES.NAME%TYPE ); TYPE rowGetPrograms IS RECORD( l_id PROGRAMS.ID%TYPE, l_spec_id PROGRAMS.SPEC_ID%TYPE, l_branch_id PROGRAMS.BRANCH_ID%TYPE ); TYPE rowGetAcceptancePlans IS RECORD( l_id ACCEPTANCE_PLANS.ID%TYPE, l_program_id ACCEPTANCE_PLANS.PROGRAM_ID%TYPE, l_amount ACCEPTANCE_PLANS.AMOUNT%TYPE, l_plan_year ACCEPTANCE_PLANS.PLAN_YEAR%TYPE, l_department_id ACCEPTANCE_PLANS.DEPARTMENT_ID%TYPE ); TYPE rowGetPriorities IS RECORD( l_id PRIORITIES.ID%TYPE, l_entrant_id PRIORITIES.ENTRANT_ID%TYPE, l_program_id PRIORITIES.PROGRAM_ID%TYPE, l_priority PRIORITIES.PRIORITY%TYPE ); TYPE rowGetCommandments IS RECORD( l_id COMMANDMENTS.ID%TYPE, l_entrant_id COMMANDMENTS.ENTRANT_ID%TYPE, l_program_id COMMANDMENTS.PROGRAM_ID%TYPE, l_order_id COMMANDMENTS.ORDER_ID%TYPE, l_pre_commandment COMMANDMENTS.PRE_COMMANDMENT%TYPE, l_commandment_year COMMANDMENTS.COMMANDMENT_YEAR%TYPE, l_code COMMANDMENTS.CODE%TYPE, l_department_id COMMANDMENTS.DEPARTMENT_ID%TYPE, l_commit_date COMMANDMENTS.COMMIT_DATE%TYPE, l_create_date COMMANDMENTS.CREATE_DATE%TYPE ); TYPE rowGetEntrants IS RECORD( l_id ENTRANTS.ID%TYPE, l_human_id ENTRANTS.HUMAN_ID%TYPE, l_original ENTRANTS.ORIGINAL%TYPE, l_medal ENTRANTS.MEDAL%TYPE, l_allowance ENTRANTS.ALLOWANCE%TYPE, l_entry_year ENTRANTS.ENTRY_YEAR%TYPE, l_scanned_profile ENTRANTS.SCANNED_PROFILE%TYPE ); TYPE rowGetHumans IS RECORD( l_id HUMANS.ID%TYPE, l_name HUMANS.NAME%TYPE, l_surname HUMANS.SURNAME%TYPE, l_second_name HUMANS.SECOND_NAME%TYPE, l_birth_date HUMANS.BIRTH_DATE%TYPE, l_sex HUMANS.SEX%TYPE, l_citizenship_id HUMANS.CITIZENSHIP_ID%TYPE ); TYPE tblGetSubjects IS TABLE OF rowGetSubjects; TYPE tblGetSpecialties IS TABLE OF rowGetSpecialties; TYPE tblGetDepartmentTypes IS TABLE OF rowGetDepartmentTypes; TYPE tblGetProgramSubjects IS TABLE OF rowGetProgramSubjects; TYPE tblGetExams IS TABLE OF rowGetExams; TYPE tblGetOrderItems IS TABLE OF rowGetOrderItems; TYPE tblGetDepartments IS TABLE OF rowGetDepartments; TYPE tblGetDepartmentProgram IS TABLE OF rowGetDepartmentProgram; TYPE tblGetBranches IS TABLE OF rowGetBranches; TYPE tblGetPrograms IS TABLE OF rowGetPrograms; TYPE tblGetAcceptancePlans IS TABLE OF rowGetAcceptancePlans; TYPE tblGetPriorities IS TABLE OF rowGetPriorities; TYPE tblGetCommandments IS TABLE OF rowGetCommandments; TYPE tblGetEntrants IS TABLE OF rowGetEntrants; TYPE tblGetHumans IS TABLE OF rowGetHumans; FUNCTION GetSubjects (pCount NUMBER DEFAULT NULL) RETURN tblGetSubjects PIPELINED; FUNCTION GetSpecialties (pCount NUMBER DEFAULT NULL) RETURN tblGetSpecialties PIPELINED; FUNCTION GetDepartmentTypes (pCount NUMBER DEFAULT NULL) RETURN tblGetDepartmentTypes PIPELINED; FUNCTION GetProgramSubjects (pCount NUMBER DEFAULT NULL) RETURN tblGetProgramSubjects PIPELINED; FUNCTION GetExams (pCount NUMBER DEFAULT NULL) RETURN tblGetExams PIPELINED; FUNCTION GetOrderItems (pCount NUMBER DEFAULT NULL) RETURN tblGetOrderItems PIPELINED; FUNCTION GetDepartments (pCount NUMBER DEFAULT NULL) RETURN tblGetDepartments PIPELINED; FUNCTION GetDepartmentProgram (pCount NUMBER DEFAULT NULL) RETURN tblGetDepartmentProgram PIPELINED; FUNCTION GetBranches (pCount NUMBER DEFAULT NULL) RETURN tblGetBranches PIPELINED; FUNCTION GetPrograms (pCount NUMBER DEFAULT NULL) RETURN tblGetPrograms PIPELINED; FUNCTION GetAcceptancePlans (pCount NUMBER DEFAULT NULL) RETURN tblGetAcceptancePlans PIPELINED; FUNCTION GetPriorities (pCount NUMBER DEFAULT NULL) RETURN tblGetPriorities PIPELINED; FUNCTION GetCommandments (pCount NUMBER DEFAULT NULL) RETURN tblGetCommandments PIPELINED; FUNCTION GetEntrants (pCount NUMBER DEFAULT NULL) RETURN tblGetEntrants PIPELINED; FUNCTION GetHumans (pCount NUMBER DEFAULT NULL) RETURN tblGetHumans PIPELINED; END ALLDATA; / CREATE OR REPLACE PACKAGE BODY ALLDATA IS FUNCTION GetSubjects (pCount NUMBER DEFAULT NULL) RETURN tblGetSubjects PIPELINED IS BEGIN IF pCount IS NULL THEN FOR curr IN (SELECT * FROM SUBJECTS) LOOP PIPE ROW (curr); END LOOP; ELSE FOR curr IN (SELECT * FROM SUBJECTS WHERE ROWNUM<=pCount) LOOP PIPE ROW (curr); END LOOP; END IF; END GetSubjects; FUNCTION GetSpecialties (pCount NUMBER DEFAULT NULL) RETURN tblGetSpecialties PIPELINED IS BEGIN IF pCount IS NULL THEN FOR curr IN (SELECT * FROM SPECIALTIES) LOOP PIPE ROW (curr); END LOOP; ELSE FOR curr IN (SELECT * FROM SPECIALTIES WHERE ROWNUM<=pCount) LOOP PIPE ROW (curr); END LOOP; END IF; END GetSpecialties; FUNCTION GetDepartmentTypes (pCount NUMBER DEFAULT NULL) RETURN tblGetDepartmentTypes PIPELINED IS BEGIN IF pCount IS NULL THEN FOR curr IN (SELECT * FROM DEPARTMENT_TYPES) LOOP PIPE ROW (curr); END LOOP; ELSE FOR curr IN (SELECT * FROM DEPARTMENT_TYPES WHERE ROWNUM<=pCount) LOOP PIPE ROW (curr); END LOOP; END IF; END GetDepartmentTypes; FUNCTION GetProgramSubjects (pCount NUMBER DEFAULT NULL) RETURN tblGetProgramSubjects PIPELINED IS BEGIN IF pCount IS NULL THEN FOR curr IN (SELECT * FROM PROGRAMSUBJECTS) LOOP PIPE ROW (curr); END LOOP; ELSE FOR curr IN (SELECT * FROM PROGRAMSUBJECTS WHERE ROWNUM<=pCount) LOOP PIPE ROW (curr); END LOOP; END IF; END GetProgramSubjects; FUNCTION GetExams (pCount NUMBER DEFAULT NULL) RETURN tblGetExams PIPELINED IS BEGIN IF pCount IS NULL THEN FOR curr IN (SELECT * FROM EXAMS) LOOP PIPE ROW (curr); END LOOP; ELSE FOR curr IN (SELECT * FROM EXAMS WHERE ROWNUM<=pCount) LOOP PIPE ROW (curr); END LOOP; END IF; END GetExams; FUNCTION GetOrderItems (pCount NUMBER DEFAULT NULL) RETURN tblGetOrderItems PIPELINED IS BEGIN IF pCount IS NULL THEN FOR curr IN (SELECT * FROM ORDERS_ITEMS) LOOP PIPE ROW (curr); END LOOP; ELSE FOR curr IN (SELECT * FROM ORDERS_ITEMS WHERE ROWNUM<=pCount) LOOP PIPE ROW (curr); END LOOP; END IF; END GetOrderItems; FUNCTION GetDepartments (pCount NUMBER DEFAULT NULL) RETURN tblGetDepartments PIPELINED IS BEGIN IF pCount IS NULL THEN FOR curr IN (SELECT * FROM DEPARTMENTS) LOOP PIPE ROW (curr); END LOOP; ELSE FOR curr IN (SELECT * FROM DEPARTMENTS WHERE ROWNUM<=pCount) LOOP PIPE ROW (curr); END LOOP; END IF; END GetDepartments; FUNCTION GetDepartmentProgram (pCount NUMBER DEFAULT NULL) RETURN tblGetDepartmentProgram PIPELINED IS BEGIN IF pCount IS NULL THEN FOR curr IN (SELECT * FROM DEPARTMENTPROGRAM) LOOP PIPE ROW (curr); END LOOP; ELSE FOR curr IN (SELECT * FROM DEPARTMENTPROGRAM WHERE ROWNUM<=pCount) LOOP PIPE ROW (curr); END LOOP; END IF; END GetDepartmentProgram; FUNCTION GetBranches (pCount NUMBER DEFAULT NULL) RETURN tblGetBranches PIPELINED IS BEGIN IF pCount IS NULL THEN FOR curr IN (SELECT * FROM BRANCHES) LOOP PIPE ROW (curr); END LOOP; ELSE FOR curr IN (SELECT * FROM BRANCHES WHERE ROWNUM<=pCount) LOOP PIPE ROW (curr); END LOOP; END IF; END GetBranches; FUNCTION GetPrograms (pCount NUMBER DEFAULT NULL) RETURN tblGetPrograms PIPELINED IS BEGIN IF pCount IS NULL THEN FOR curr IN (SELECT * FROM PROGRAMS) LOOP PIPE ROW (curr); END LOOP; ELSE FOR curr IN (SELECT * FROM PROGRAMS WHERE ROWNUM<=pCount) LOOP PIPE ROW (curr); END LOOP; END IF; END GetPrograms; FUNCTION GetAcceptancePlans (pCount NUMBER DEFAULT NULL) RETURN tblGetAcceptancePlans PIPELINED IS BEGIN IF pCount IS NULL THEN FOR curr IN (SELECT * FROM ACCEPTANCE_PLANS) LOOP PIPE ROW (curr); END LOOP; ELSE FOR curr IN (SELECT * FROM ACCEPTANCE_PLANS WHERE ROWNUM<=pCount) LOOP PIPE ROW (curr); END LOOP; END IF; END GetAcceptancePlans; FUNCTION GetPriorities (pCount NUMBER DEFAULT NULL) RETURN tblGetPriorities PIPELINED IS BEGIN IF pCount IS NULL THEN FOR curr IN (SELECT * FROM PRIORITIES) LOOP PIPE ROW (curr); END LOOP; ELSE FOR curr IN (SELECT * FROM PRIORITIES WHERE ROWNUM<=pCount) LOOP PIPE ROW (curr); END LOOP; END IF; END GetPriorities; FUNCTION GetCommandments (pCount NUMBER DEFAULT NULL) RETURN tblGetCommandments PIPELINED IS BEGIN IF pCount IS NULL THEN FOR curr IN (SELECT * FROM COMMANDMENTS) LOOP PIPE ROW (curr); END LOOP; ELSE FOR curr IN (SELECT * FROM COMMANDMENTS WHERE ROWNUM<=pCount) LOOP PIPE ROW (curr); END LOOP; END IF; END GetCommandments; FUNCTION GetEntrants (pCount NUMBER DEFAULT NULL) RETURN tblGetEntrants PIPELINED IS BEGIN IF pCount IS NULL THEN FOR curr IN (SELECT * FROM ENTRANTS) LOOP PIPE ROW (curr); END LOOP; ELSE FOR curr IN (SELECT * FROM ENTRANTS WHERE ROWNUM<=pCount) LOOP PIPE ROW (curr); END LOOP; END IF; END GetEntrants; FUNCTION GetHumans (pCount NUMBER DEFAULT NULL) RETURN tblGetHumans PIPELINED IS BEGIN IF pCount IS NULL THEN FOR curr IN (SELECT * FROM HUMANS) LOOP PIPE ROW (curr); END LOOP; ELSE FOR curr IN (SELECT * FROM HUMANS WHERE ROWNUM<=pCount) LOOP PIPE ROW (curr); END LOOP; END IF; END GetHumans; END ALLDATA; / SELECT * FROM TABLE(ALLDATA.GetSpecialties); SELECT * FROM TABLE(ALLDATA.GetSubjects); SELECT * FROM TABLE(ALLDATA.GetDepartmentTypes); SELECT * FROM TABLE(ALLDATA.GetProgramSubjects); SELECT * FROM TABLE(ALLDATA.GetDepartments(5)); SELECT * FROM TABLE(ALLDATA.GetOrderItems); SELECT * FROM TABLE(ALLDATA.GetExams(5)); SELECT * FROM TABLE(ALLDATA.GetDepartmentProgram(5)); SELECT * FROM TABLE(ALLDATA.GetPrograms(5)); SELECT * FROM TABLE(ALLDATA.GetBranches); SELECT * FROM TABLE(ALLDATA.GetAcceptancePlans); SELECT * FROM TABLE(ALLDATA.GetPriorities(5)); SELECT * FROM TABLE(ALLDATA.GetCommandments(5)); SELECT * FROM TABLE(ALLDATA.GetHumans(5)); SELECT * FROM TABLE(ALLDATA.GetEntrants(5)); /