2014年7月2日水曜日

MySQLで動的DDL

見るよりやってみる。が分かりやすいかもしれません。

キーワード
PREPAREステートメント , executeステートメント

Procedureの実装

drop procedure if exists cust_createtable;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `cust_createtable` (IN table_nane varchar(100))
  READS SQL DATA
BEGIN
  declare col varchar(4000);
  set col = 'col1 varchar(100)';
  select CONCAT('create table ',table_nane,' (' , col , ')') into @qry;
  PREPARE ddl_stmt from @qry;
  execute ddl_stmt;
end
;
;;
DELIMITER ;

呼び出し

call cust_createtable('test3')

確認


show tables like 'test%'

0 件のコメント: