my sql 함수 만들기 0 3 412

by bigjj [MySQL] [2020.07.05 07:14:55]


 

dayandyear(howlong int)  이런 함수를 만들어야 합니다

dayandyear(2) 라고 치면 730 이 나와야 하고요 계산은 들어가는 2 와 365 를 곱한것 입니다.

이걸 my sql 에 어떻게 써야 하나요? 어디다가 무엇을 써야 할지를 모르겠네요.

 

by pajama [2020.07.05 10:01:11]

아래처럼 만들어봤습니다. 

delimiter //
create function dayandyear(howlong int)
returns int
deterministic
begin
    declare ret int;
    set ret = howlong * 365;
    return ret;

end//


select dayandyear(2);
+---------------+
| dayandyear(2) |
+---------------+
|           730 |
+---------------+
1 row in set (0.00 sec)

 


by bigjj [2020.07.05 16:46:23]

앞에 써있는 delimieter 가 무엇 인가요?

retern int  deterministic 요것도 모르겠는데

이걸 쓰지 말라고 어디 써있는데 그건 무슨 뜻인지..

그냥 지워 버려도 되는 걸까요?.

그리고 begin 과 end 사이에 들어가는 구문 형식이 뜻 하는게 뭔지 알고싶어요!


by 마농 [2020.07.06 15:08:28]

1. delimiter //
 - 원래 명령어는 세미콜론(;) 단위로 실행되는데.
 - 세미콜론을 포함한 여러 명령줄이 하나의 pl/sql 묶음으로 실행되어야 하므로
 - 세미콜론(;)이 아닌(//)로 잠시 구분자를 바꾸는 것.
 - 최종 함수 생성 수행 후 다시 원래대로 돌려놔야 함 delimiter ;
2. returns int
 - 함수는 반드시 리턴값이 있어야함.
 - 이 함수는 int 형 값을 리턴한다는 의미
3. deterministic
 - 이 함수는 입력값이 같으면 출력값도 같다는 것을 보장한다는 의미
4. begin ~ end : 실행 단위 블럭의 시작과 끝
5. declare : 변수 선언
6. set : 변수에 값 대입
7. return : 반환
8. 참고 : https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입