Я пытаюсь получить динамический доступ к именам таблиц, и существует много таблиц, но он обрабатывает только первую таблицу и разрывы цикла. Любая идея, что я могу делать неправильно
PROCEDURE IF EXISTS pmms.TdevidendPaymentOnSavings;
DELIMITER //
CREATE PROCEDURE TdevidendPaymentOnSavings() READS SQL DATA BEGIN
DECLARE accountNumber VARCHAR(30);DECLARE tableName VARCHAR(30);DECLARE
theAccountDate1 DATE;
DECLARE anyDateInYear DATE;DECLARE rateUsed INTEGER;DECLARE lastDate
DATE;
DECLARE ledgerBalance1 INTEGER;DECLARE amountComputed INTEGER;DECLARE
monthlySummations INTEGER;
DECLARE monthlyTotals INTEGER DEFAULT 0; DECLARE l_done INTEGER;DECLARE
finalTotals INTEGER DEFAULT 0;
DECLARE forSelectingAccountNumbers CURSOR FOR SELECT account_number
FROM
pmms.account_created_store WHERE account_number LIKE '05502%10';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET l_done=1;
SET l_done=0;
SELECT SavingsStartDate,SavingsRateUsed INTO anyDateInYear,rateUsed from
SavingsSharesComputationParameters;
OPEN forSelectingAccountNumbers;
accounts_loop: LOOP
FETCH forSelectingAccountNumbers into accountNumber;
IF l_done=1 THEN
LEAVE accounts_loop;
END IF;
SET tableName=CONCAT('bsanca',accountNumber);
CALL accountNma(accountNumber,@accountName);
SELECT tableName,accountNumber;
SET @sql_text1 = concat('SELECT ledger_balance INTO @ledgerBalance from
',tableName,' WHERE trn_date=@theAccountDate ORDER BY trn_id DESC LIMIT
1');
SELECT @sql_text1;
SELECT @ledgerBalance ;SELECT @theAccountDate;
PREPARE stmt1 FROM @sql_text1;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END LOOP accounts_loop;
SET l_done=0;
CLOSE forSelectingAccountNumbers;
END//
DELIMITER ;
Я проверил бесчисленное количество раз, но, кажется, когда я удаляю подготовленный оператор и циклы должным образом, в противном случае я, кажется, не могу найти проблему.
Пожалуйста, помогите узнать, не работают ли подготовленные операторы в циклах
в процедурах mysql.