MySQL 動態sql語句執行 用時間做表名

2021-07-03 20:29:36 字數 897 閱讀 5531

在使用資料的時候,我時候我們需要很多資料庫,而且想用時間來做表名以區分。但是mysql在儲存過程中不支援使用變數名來做表名或者列名。

比如,有乙個表我們想以「2015-07-16 12:00:00」命名。

如果只是更換乙個普通的表名的話,很簡單,直接使用下面sql語句即可:

alter table old_table_name rename new_table_name

但是要以時間為表名,動態命名的話就不可以了。首先我們可以用now()函式獲取系統當前的時間。要尋求支援動態以變數的形式做資料庫操作的方法,在mysql5.1以上的版本中,prepare語句可以支援這樣的操作。

我們可以用set @var=...設定變數,然後用prepare stml from @var設定動態sql語句,最後用execute stml;執行語句。

下面是以時間為表名,動態修改乙個表的sql執行過程:

set @asql=concat('alter table old_table_name rename `',now(),'`');

prepare stml from @asql;

execute stml;

這裡使用到了mysql中concat函式,此函式的作用是字串拼接。相信懂得程式設計的同學對此都不陌生。

使用方法:

concat(str1,str2,…)

返回結果為連線引數產生的字串。注意如有任何乙個引數為null ,則返回值為 nul。

附一張結執行果圖:

mysql執行動態sql語句

今天oracle群上有人問mysql可不可以執行動態的sql語句,搜了一下,居然可以。set tsql select from companyinfo prepare stmt1 from tsql execute stmt1 set fid fid set table1 companyinfo s...

mysql動態sql語句

直接執行sql宣告 sqlstatement 例程 string mysql mysql create table employee emp id integer not null,dept id integer not null,emp fname char 10 not null,emp lna...

MYSQL 動態sql語句

直接執行sql宣告 sqlstatement 例程 stringmysql mysql create table employee emp id integer not null,dept id integer not null,emp fname char 10 not null,emp lnam...