-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path0731.sql
More file actions
156 lines (121 loc) · 2.58 KB
/
0731.sql
File metadata and controls
156 lines (121 loc) · 2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
DELIMITER //
CREATE PROCEDURE sp_test
(
OUT v_now DATETIME,
OUT v_version VARCHAR(30)
)
BEGIN
SELECT NOW(), VERSION() INTO v_now, v_version;
END
//
DELIMITER ;
CALL sp_test(@t_now, @t_version);
SELECT @t_now, @t_version;
CREATE TABLE dept_clone
AS
SELECT * FROM dept;
DROP TABLE dept_clone;
DELIMITER //
CREATE PROCEDURE sp_deleteDept()
BEGIN
DELETE FROM dept_clone;
END
//
DELIMITER ;
CALL sp_deleteDept();
Delimiter $$
CREATE PROCEDURE sp_insertDept
(
IN v_deptno TINYINT,
IN v_dname VARCHAR(14),
IN v_loc VARCHAR(13)
)
BEGIN
INSERT INTO dept_clone(deptno, dname, loc)
VALUES (v_deptno, v_dname, v_loc);
COMMIT;
END
$$
Delimiter ;
CALL sp_insertDept(50, 'Design', 'Seoul');
/* 사원번호를 입력받아서 부서이름과 부서위치를 출력하시오 */
Delimiter $$
CREATE PROCEDURE sp_selectEmp
(
IN v_empno SMALLINT,
OUT v_dname VARCHAR(14),
OUT v_loc VARCHAR(13)
)
BEGIN
SELECT dname, loc INTO v_dname, v_loc
FROM emp JOIN dept ON (emp.deptno = dept.deptno)
WHERE empno = v_empno;
END $$
Delimiter ;
CALL sp_selectEmp(7369, @t_dname, @t_loc);
SELECT @t_dname, @t_loc;
Delimiter $$
CREATE PROCEDURE sp_selectDname
(
INOUT v_name VARCHAR(14)
)
BEGIN
DECLARE v_str VARCHAR(14);
SELECT loc INTO v_str
FROM dept
WHERE dname = v_name;
SET v_name := v_str;
END $$
Delimiter ;
SET @t_str := 'RESEARCH';
CALL sp_selectDname(@t_str);
SELECT @t_str;
Delimiter $$
CREATE PROCEDURE sp_select_emp_dept
(
IN v_deptno TINYINT
)
BEGIN
SELECT empno, ename, dname, loc, dept.deptno
FROM emp NATURAL JOIN dept
WHERE deptno = v_deptno;
END $$
Delimiter ;
CALL sp_select_emp_dept(20);
/* "번호\t진찰부서\t진찰비\t입원비\t진료비 */
Delimiter $$
CREATE PROCEDURE sp_select_all_patient()
BEGIN
SELECT number, dept, operfee, hospitalfee, money
FROM Patient
ORDER BY number DESC;
END $$
Delimiter ;
Delimiter //
CREATE PROCEDURE sp_select_one_patient(IN v_number TINYINT)
BEGIN
SELECT *
FROM Patient
WHERE number = v_number;
END //
Delimiter ;
CALL sp_select_one_patient(7);
sp_update_patient
(
IN v_number TINYINT,
IN v_code CHAR(2),
IN v_days SMALLINT,
IN v_age TiNYINT,
IN v_dept VARCHAR(20),
IN v_operfee INT,
IN v_hospitalfee INT,
IN v_money INT
)
BEGIN
UPDATE Patient
SET code = v_code, days = v_days, age = v_age,
dept = v_dept, operfee = v_operfee, hospitalfee = v_hospitalfee,
money = v_money
WHERE number = v_number;
COMMIT;
END