2015-11-26 94 views
1

我在同一个mysql服务器中有100个不同模式的同名(name-xxx)表。 我想用一个脚本来改变一个名为XXX的所有表(没有硬编码 脚本架构名称)在多个模式中改变具有相同名称的表

+0

随着信息给出一个选项是使用[13.6.6游标](https://dev.mysql.com/doc/refman/5.7/en/cursors.html)和[13.5 SQL语法的预处理语句](http://dev.mysql。 COM/DOC/refman/5.7/EN/SQL语法制备-statements.html)。 – wchiquito

回答

0

你可以尝试这样的事情:

DECLARE @alterQ NVARCHAR(max) 
DECLARE @table_name VARCHAR(45) 

DECLARE tables_curs CURSOR FOR 
    SELECT t.table_name 
    FROM INFORMATION_SCHEMA.TABLES t 
    WHERE t.table_name = 'xxx' 
    AND t.table_catalog = 'db_name' 

OPEN tables_curs 
FETCH tables_curs INTO @table_name 

WHILE @@Fetch_Status = 0 
BEGIN 

    SET @table_name = N'ALTER TABLE @table_name ...' 
    EXEC sp_executesql @alterQ 

END 

CLOSE tables_curs 
DEALLOCATE tables_curs 
+0

MySQL或MSSQL? – wchiquito

相关问题