我想用一條語句(查詢)創建多個表。如何在mysql的循環中創建create table語句
Loop
start
(
create table a
)
a =a +1
end loop
所以說它創造標註爲TABLE1
,TABLE2
100桌,...
我想用一條語句(查詢)創建多個表。如何在mysql的循環中創建create table語句
Loop
start
(
create table a
)
a =a +1
end loop
所以說它創造標註爲TABLE1
,TABLE2
100桌,...
請嘗試以下步驟。
DROP PROCEDURE IF EXISTS `createTableProcTest`;
delimiter //
CREATE PROCEDURE `createTableProcTest`()
BEGIN
DECLARE count INT Default 0;
simple_loop: LOOP
SET @a := count + 1;
SET @statement = CONCAT('Create table Table',@a,' (name VARCHAR(70), age int);');
PREPARE stmt FROM @statement;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET count = count + 1;
IF count=100 THEN
LEAVE simple_loop;
END IF;
END LOOP simple_loop;
END//
爲了執行只需做到以下幾點:
Call createTableProcTest();
通過執行上述步驟100個表格將一個具有名稱表1,...,table100創建。 而表結構將類似於以下內容:
N:B:程序執行可能需要幾秒鐘。不要急躁。
您需要給我們更多的細節,但我認爲在循環內調用存儲過程來創建過程更容易。
您需要創建一個過程來創建您需要的表並在循環內調用此過程。
例:
CREATE PROCEDURE SP_Create_Table(IN TABLENAME VARCHAR(50))BEGIN SET @sql = CONCAT( 'CREATE TABLE',表名, '(列1 INT(11))');
準備從@sql發送; EXECUTE stmt; DEALLOCATE PREPARE stmt; END
現在,調用創建循環內表過程
DELIMITER //創建功能CalcIncome(starting_value INT)RETURNS INT BEGIN
DECLARE收入INT; SET收入= 0; label1:WHILE income < = 50 DO call SP_Create_Table(CONVERT(VARCHAR(50),starting_value)); END WHILE label1;返回收入;結束; // DELIMITER;
希望我HALP你,
你可能想解釋一點...... –
做編輯的幫助? – akshay
100個表相同的列名和數據類型? –