從 bd_house 查詢 houseId, houseName, 插入 bd_house_customer
DROP PROCEDURE IF EXISTS insert_extra_column_test;
DELIMITER //
CREATE PROCEDURE insert_extra_column_test()
BEGIN
-- 聲明變量
DECLARE newId LONG;
DECLARE houseId LONG;
DECLARE houseName VARCHAR ( 50 );
DECLARE num integer;
-- 聲明接收結果的遊標
DECLARE
house CURSOR FOR
-- 查詢記錄
SELECT
id houseId,
NAME houseName
FROM bd_house
WHERE
id NOT IN ( SELECT house_id FROM bd_house_customer WHERE customer_id = 1111)
ORDER BY id;
-- 打開遊標
OPEN house;
-- 匹配第一個遊標, 給變量賦值
FETCH house INTO houseId, houseName;
-- 這是固定遍歷 100 次, 遍歷全部可以用 while ( house is not null ) 判斷
SET num = 100;
WHILE ( num > 0 ) DO
INSERT INTO `bd_house_customer` (
`id`,
`tenant_id`,
`house_id`,
`house`,
`customer_id`,
`customer`,
`change_cause`,
`relation_state`,
`remarks`,
`lease_type`,
`belong_house_name`,
`sign_date`,
`lease_source`,
`asset_use_type`
)
VALUES
(
houseId,
1111,
houseId,
houseName,
1111,
'張三',
'2222',
'currentTenant',
1,
'NewRent',
houseName,
NULL,
'PC_terminal',
'zzzz'
);
SET num = num - 1;
-- 匹配下一個遊標並賦值
FETCH house INTO houseId, houseName;
-- 結束循環, 關閉遊標
END WHILE;
CLOSE house;
END //
DELIMITER ;
CALL insert_extra_column_test();