Top Banner
1 1. Create Tuple Type UDT in Oracle SQL Server CREATE OR REPLACE TYPE result_tf_row AS OBJECT ( Dept_No int, Dept_Name char(30), COUNT_Emp int, SUM_Salary int, AVG_Salary int); ------------------------
8

1. Create Tuple Type UDT in Oracle SQL Servercis.csuohio.edu/~sschung/cis612/ThuatSPUDTTupletypeOracle.pdf · Create Table Function with Tuple Type UDT in Oracle SQL Server CREATE

Jul 06, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1. Create Tuple Type UDT in Oracle SQL Servercis.csuohio.edu/~sschung/cis612/ThuatSPUDTTupletypeOracle.pdf · Create Table Function with Tuple Type UDT in Oracle SQL Server CREATE

1

1. Create Tuple Type UDT in Oracle SQL Server CREATE OR REPLACE TYPE result_tf_row AS OBJECT (

Dept_No int, Dept_Name char(30), COUNT_Emp int, SUM_Salary int, AVG_Salary int);

------------------------

Page 2: 1. Create Tuple Type UDT in Oracle SQL Servercis.csuohio.edu/~sschung/cis612/ThuatSPUDTTupletypeOracle.pdf · Create Table Function with Tuple Type UDT in Oracle SQL Server CREATE

2

2. Create Table Function with Tuple Type UDT in Oracle SQL Server CREATE OR REPLACE TYPE Total_Salary_By_Dept_Table AS TABLE OF result_tf_row;

----------------------- CREATE OR REPLACE FUNCTION Total_Salary_By_Dept(dept_id int) RETURN Total_Salary_By_Dept_Table IS CURSOR total_cursor IS SELECT D.dnumber Dept_No, D.dname Dept_Name, COUNT(*) COUNT_Emp, SUM(E.salary) SUM_Salary, AVG(E.salary) AVG_Salary FROM DEPARTMENT D JOIN EMPLOYEE E ON D.dnumber = E.dno WHERE D.Dnumber = dept_id GROUP BY D.dnumber, D.dname; cursor_rec total_cursor%ROWTYPE; result_table Total_Salary_By_Dept_Table := Total_Salary_By_Dept_Table(); BEGIN OPEN total_cursor; FETCH total_cursor INTO cursor_rec;

Page 3: 1. Create Tuple Type UDT in Oracle SQL Servercis.csuohio.edu/~sschung/cis612/ThuatSPUDTTupletypeOracle.pdf · Create Table Function with Tuple Type UDT in Oracle SQL Server CREATE

3

IF total_cursor%FOUND THEN result_table.extend(); result_table(result_table.last) := result_tf_row

(cursor_rec.Dept_No, cursor_rec.Dept_Name, cursor_rec.COUNT_Emp, cursor_rec.SUM_Salary, cursor_rec.AVG_Salary); END IF; CLOSE total_cursor; RETURN result_table; END;

-----------------------------

Page 4: 1. Create Tuple Type UDT in Oracle SQL Servercis.csuohio.edu/~sschung/cis612/ThuatSPUDTTupletypeOracle.pdf · Create Table Function with Tuple Type UDT in Oracle SQL Server CREATE

4

SELECT * FROM TABLE(Total_Salary_By_Dept(5));

Page 5: 1. Create Tuple Type UDT in Oracle SQL Servercis.csuohio.edu/~sschung/cis612/ThuatSPUDTTupletypeOracle.pdf · Create Table Function with Tuple Type UDT in Oracle SQL Server CREATE

5

2.

CREATE TABLE NEW_Total_Salary_By_Dept_Table (

Dept_No int, Dept_Name char(30), COUNT_Emp int, SUM_Salary int, AVG_Salary int, NEW_SUM_Salary int, NEW_AVG_Salary int );

------------------------

Page 6: 1. Create Tuple Type UDT in Oracle SQL Servercis.csuohio.edu/~sschung/cis612/ThuatSPUDTTupletypeOracle.pdf · Create Table Function with Tuple Type UDT in Oracle SQL Server CREATE

6

CREATE OR REPLACE PROCEDURE Report_NEW_Total_Salary (dept_id int) IS CURSOR total_cursor IS SELECT * FROM TABLE(Total_Salary_By_Dept(dept_id)); cursor_rec total_cursor%ROWTYPE; NEW_sum int; NEW_avg int; BEGIN OPEN total_cursor; FETCH total_cursor INTO cursor_rec; IF (total_cursor%NOTFOUND) THEN dbms_output.put_line('Table is empty.'); ELSE IF dept_id = 1 THEN NEW_sum := cursor_rec.SUM_Salary * 1.1; NEW_avg := cursor_rec.AVG_Salary * 1.1; ELSIF dept_id = 4 THEN NEW_sum := cursor_rec.SUM_Salary * 1.2; NEW_avg := cursor_rec.AVG_Salary * 1.2; ELSIF dept_id = 5 THEN NEW_sum := cursor_rec.SUM_Salary * 1.3; NEW_avg := cursor_rec.AVG_Salary * 1.3; ELSIF dept_id = 7 THEN NEW_sum := cursor_rec.SUM_Salary * 1.4; NEW_avg := cursor_rec.AVG_Salary * 1.4; END IF; INSERT INTO NEW_Total_Salary_By_Dept_Table VALUES (cursor_rec.Dept_No, cursor_rec.Dept_Name, cursor_rec.COUNT_Emp, cursor_rec.SUM_Salary, cursor_rec.AVG_Salary, NEW_sum, NEW_avg); END IF; CLOSE total_cursor; END;

Page 7: 1. Create Tuple Type UDT in Oracle SQL Servercis.csuohio.edu/~sschung/cis612/ThuatSPUDTTupletypeOracle.pdf · Create Table Function with Tuple Type UDT in Oracle SQL Server CREATE

7

-----------------------------------

Page 8: 1. Create Tuple Type UDT in Oracle SQL Servercis.csuohio.edu/~sschung/cis612/ThuatSPUDTTupletypeOracle.pdf · Create Table Function with Tuple Type UDT in Oracle SQL Server CREATE

8

BEGIN Report_NEW_Total_Salary(4); END; / SELECT * FROM NEW_Total_Salary_By_Dept_Table;