SQLプログラミングとPROSDUR basic

3269 ワード

PROCEDUER
-SQLも変数を宣言した.
したがって、プログラミングを続けることができます.
DELIMITER $$
CREATE PROCEDURE
BEGIN
~実行コード...~
END $$
DELIMITER;
上の構文で宣言できます.
CALLプロセス名()を呼び出します.
IF-ELSE文を作成しましょう.
DELIMITER $$
	CREATE PROCEDURE ifProc()
		BEGIN
			DECLARE var1 INT;  -- 변수 선언
    		SET var1 = 2000; -- 선언한 변수에 값 저장
    		IF var1 = 100 THEN -- IF문 선언
				SELECT '100이 맞습니다.';
			ELSE
				SELECT '100이 아닙니다.';
		END IF; -- IF문 종료지점
	END $$
DELIMITER ;


CALL ifProc();
プロシージャを変更する場合は、プロシージャを削除します.
文法を変更し、再宣言する必要があります.
DROP PROCEDURE ifProc;
DROP PROCEDUREプロセス名;
削除プロセスを使用します.
プロセス名の右側の()は少なくない.
クエリー・テーブルの従業員を作成するプロセス.
彼を呼びに行きます.
DELIMITER $$
CREATE PROCEDURE getEmp()
	BEGIN 
		SELECT * FROM employees;
		END;
	END $$
DELIMITER ;

call getEmp();

今回は従業員の机の上の10001番の従業員の
入社日が5年を超えていないかチェックしてみます
CREATE PROCEDURE checkFiveYear()
	BEGIN
		DECLARE hireDATE DATE; # 입사일을 얻어오기 위해 DATE 자료형 변수 선언
        DECLARE todayDATE DATE; # 오늘 날짜 얻어오기
        DECLARE days INT; # 오늘날짜 - 입사일 해서 경과일수 얻어오기
        
        # 10001번 직원의 hire_date를 조회하는 쿼리문을 먼저 작성해보세요.
        SELECT hire_date INTO hireDATE
			FROM employees WHERE emp_no = 10003;
		# 위 쿼리문의 결과로 나온 10001번 직원의 hire_date값을 hireDATE 변수에 저장하기 위해
        # INTO 키워드를 씁니다.
        
		SET todayDATE = CURRENT_DATE(); # 오늘 날짜를 구하는 기능
        SET days = DATEDIFF(todayDATE, hireDATE); # todayDATE - hireDATE를 수행
        
        # 경과일수가 5년을 넘었는지 체크하기
        IF(days / 365) >= 5 THEN #입사경과일을 365로 나눈 값이 5보다 크면 5년 이상
			SELECT CONCAT('입사한지', days, '일이 경과했습니다.');
            # 아닌 경우는 '5년미만이고 days 일째 근무중' 이라고 나오게 한 다음 구문을 종료시켜주세요.
		ELSE
			SELECT CONCAT('5년미만이고, ', days, '일째 근무중.');
		END IF;
	END $$
DELIMITER ;
call checkFiveYear();

コメントを理解して適用するのは難しくありません.
従業員テーブル内の従業員の詳細
入社5年後の確認プロセスを作成します
この過程.
checkFiveYear 2()のかっこ内でemp number INTEGERを宣言する
整数を入力させます.
CREATE PROCEDURE checkFiveYear2(emp_number INTEGER) # 매번 프로시저를 수정하지 않아도 되게 매개변수를 선언합시다.
	BEGIN
		DECLARE hireDATE DATE; 
        DECLARE todayDATE DATE; # 
        DECLARE days INT;
        
       
        SELECT hire_date INTO hireDATE
			FROM employees WHERE emp_no = emp_number; # 그리고 매개변수를 적용해주면 됩니다.
        
        
        SET todayDate = CURRENT_DATE();
        SET days = DATEDIFF(todayDATE, hireDATE); 
        
        IF (days / 365) >= 5 THEN 
			SELECT CONCAT(emp_number, '번 사원은 입사한 지', days, '일이 경과했습니다.');
            
            
		ELSE
			SELECT CONCAT('입사한지 5년 미만입니다. ', days, '일째 근무 중');
        
        END IF;
	END $$
DELIMITER $$
call checkFiveYear2(19999);
call checkFiveYear2(20000);

今ここにいるよ