Newer
Older
java_learning / stored / ensyu15.sql
himeno on 2 Aug 2019 1 KB init
CREATE FUNCTION remove_equipment()
RETURNS @equipment_table TABLE (
	car_navigation_cnt INT NOT NULL,
	etc_cnt INT NOT NULL
)
AS
BEGIN
	DECLARE @get_car_navigation_cnt INT;
	DECLARE @set_car_navigation_cnt INT;
	DECLARE @remainder_car_navigation_cnt INT;
	DECLARE @get_etc_cnt INT;
	DECLARE @set_etc_cnt INT;
	DECLARE @remainder_etc_cnt INT;

	-- 取り外すカーナビの台数
	SELECT @get_car_navigation_cnt = COUNT(car_management_no)
	FROM nmrm_rent_car
	WHERE smoking_kbn = '1'
	  AND car_navigation = '1';

	-- カーナビの取り付け対象となる車の台数
	SELECT @set_car_navigation_cnt = COUNT(car_management_no)
	FROM nmrm_rent_car
	WHERE smoking_kbn = '2'
	  AND car_navigation = '0';

	-- カーナビを喫煙者→禁煙車に移した時のカーナビの残数
	SET @remainder_car_navigation_cnt = @get_car_navigation_cnt - @set_car_navigation_cnt;
	IF @remainder_car_navigation_cnt < 0
	BEGIN
		SET @remainder_car_navigation_cnt = 0;
	END

	-- 取り外すETCの台数
	SELECT @get_etc_cnt = COUNT(car_management_no)
	FROM nmrm_rent_car
	WHERE smoking_kbn = '1'
	  AND etc = '1';

	-- ETCの取り付け対象となる車の台数
	SELECT @set_etc_cnt = COUNT(car_management_no)
	FROM nmrm_rent_car
	WHERE smoking_kbn = '2'
	  AND etc = '0';

	-- ETCを喫煙者→禁煙車に移した時のETCの残数
	SET @remainder_etc_cnt = @get_etc_cnt - @set_etc_cnt;
	IF @remainder_etc_cnt < 0
	BEGIN
		SET @remainder_etc_cnt = 0;
	END

	INSERT INTO @equipment_table VALUES(@remainder_car_navigation_cnt, @remainder_etc_cnt);

	RETURN;
END;