티스토리 뷰
반응형
create procedure gProc()
begin
declare id varchar(10); -- id 저장할 변수
declare g varchar(5); -- 등급 저장할 변수
declare total bigint; -- 합계 저장할 변수
declare endofRow boolean default false; -- 마지막 행인지 판단할 변수
declare usercursor cursor for -- 커서 정의 (한 행 씩 움직이면서 가리키고 있을것)
select U.userID , sum(price * amount) from buyTbl B ( buyTbl 에서 U.userID와 가격*갯수의 합계를 가져온다)
right outer join userTbl U (userTbl과 join함)
on B.userID = U.userID (userID를 기준으로)
group by U.userID; ( userID별로 그룹으로 묶는다)
declare continue handler for ( 커서가 계속 움직이는 조건 정의)
not found set endofRow = true; ( 다음 행에 아무것도 발견하지 못했을때 endofRow 를 true로 변경한다.)
open usercursor; -- 커서 열기
cursor_loop : loop -- 루프문 이름 정하기
fetch usercursor into id, total; -- usercursor에 저장된 값(userID, sum(price*amount) 를 각각 id와 total에 넣는다.
if endofRow = true then -- 만약 endorRow가 true면 ( 다음에 행이 없다는 소리)
leave cursor_loop; -- cursor loop를 break 한다.
end if; -- if문 끝
case -- 등급구별
when(total>=1500) then set g = 'great'; -- 만약 total(buyTbl에서 가져온 sum(price*amount))이 1500 보다 크면 great
when(total>=1000) then set g = 'good';
when(total>=10) then set g = 'soso';
else set g = 'ghost'; end case; -- 그 아무것도 아니면 ghost
update userTbl set grade = g where userID = id; -- userTbl 의 grade 칼럼에 g의 값을 넣는데 조건은 userID와 id가 같을것
end loop cursor_loop; -- 루프 끝냄
close usercursor; -- 커서 닫음
end$$
mysql> delimiter ;
mysql> call gProc();
mysql> select * from userTbl;
+--------+-----------+-----------+--------+---------+---------+--------+------------+-------+
| userID | name | birthYear | addr | mobile1 | mobile2 | height | mDate | grade |
+--------+-----------+-----------+--------+---------+---------+--------+------------+-------+
| BBK | 바비킴 | 1973 | 서울 | 010 | 0000000 | 176 | 2013-05-05 | great |
| EJW | 은지원 | 1972 | 경북 | 011 | 8888888 | 174 | 2014-03-03 | soso |
| JKW | 조관우 | 1965 | 경기 | 018 | 9999999 | 172 | 2010-10-10 | ghost |
| JYP | 조용필 | 1950 | 경기 | 011 | 4444444 | 166 | 2009-04-04 | soso |
| KBS | 김범수 | 1979 | 경남 | 011 | 2222222 | 173 | 2012-04-04 | good |
| KKH | 김경호 | 1971 | 전남 | 019 | 3333333 | 177 | 2007-07-07 | ghost |
| LJB | 임재범 | 1963 | 서울 | 016 | 6666666 | 182 | 2009-09-09 | ghost |
| LSG | 이승기 | 1987 | 서울 | 011 | 1111111 | 182 | 2008-08-08 | ghost |
| SSK | 성시경 | 1979 | 서울 | NULL | NULL | 186 | 2013-12-12 | soso |
| YJS | 윤종신 | 1969 | 경남 | NULL | NULL | 170 | 2005-05-05 | ghost |
+--------+-----------+-----------+--------+---------+---------+--------+------------+-------+
반응형
'MySQL' 카테고리의 다른 글
mysql 에서 '' 값 찾기 (0) | 2020.10.20 |
---|---|
190909 mysql trigger (0) | 2019.09.09 |
190906 while 구구단 프로시저 (0) | 2019.09.09 |
190830 mysql in, out 프로시저 (0) | 2019.09.09 |
mysql max_allowed_packet 에러 (0) | 2019.09.03 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- poi
- 이메일 정규식
- PageNotFound - No mapping for GET
- 계좌번호정규식
- select제어
- Spring
- 정규식 한글만
- spring error #
- poi 엑셀
- jQuery
- JSON
- POI EXCEL
- JSON파싱
- spring 엑셀
- Regex
- no getter for property named
- Failed to load resource: the server responded with a status of 404 (Not Found)
- IntelliJ #gradle #tomcat #spring #springmvc
- selectbox
- 인텔리제이
- 정규식 숫자만
- js
- ''찾기
- mybatis
- JSON날짜
- 정규식 특수문자
- 엑셀다운로드
- 공백찾기
- 정규식
- SpringXmlModelInspection
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함