我有两种方案,分别是' sch1 ',' sch2 '
我在 sch1 中拥有ID。 tbl1 。 id
例如,如果 id = 12 ,则表示我处于第二种方案表( sch2 。 k12 )。
所以我需要创建一个过程,该过程将搜索 sch2 中的字段。 k + id ,但我不太了解该怎么做。如果有人能大致实现我将不胜感激
-UPD- 我做到了,也许将来会对某人有所帮助
我明白了:
DELIMITER $
CREATE PROCEDURE findSomething()
BEGIN
DECLARE ID INTEGER;
DECLARE ID_adt INTEGER;
create temporary table temp_table(k_id INTEGER, col INTEGER);
set ID := (SELECT max(id) from sch1.tbl1);
WHILE ID > 0 DO
SET ID_adt = ID ;
SET @set1 = CONCAT('SELECT max(ID) from sch2.k',ID,' into @example1');
PREPARE stmt from @set1;
EXECUTE stmt;
SET @set2 = CONCAT('SELECT col FROM sch2.k',col,' where ID = @example1 into @example2');
PREPARE stmt from @set2;
EXECUTE stmt;
INSERT INTO temp_table (ID,col) VALUES(ID,@example2);
DEALLOCATE PREPARE stmt;
set ID = (SELECT max(ID) from billing.projects where ID < ID_adt);
END WHILE;
select * from temp_table;
drop temporary table temp_table;
END $
delimiter ;