【发布时间】:2012-01-06 15:38:29
【问题描述】:
我不确定是否可以使用 TSQL 中的循环来执行此操作。
我有一个数据库列表,我想循环遍历每个数据库,并根据需要重新创建视图。
我已经有一个脚本可以删除并重新创建视图。然而,目前在我的脚本顶部,我有一堆使用语句,我只是在列表中取消注释并重新运行脚本。但是我想自动化它,所以它会快得多。过去我做过类似的事情,通过一串数据库名称循环并使用它来执行 use 语句。除了创建视图时,它有效,因为视图必须由 go 语句分隔。这是我用于解析数据库的代码的代码 sn-p 任何有助于使用视图的帮助都会很棒。
DECLARE @DBs AS VARCHAR(MAX);
DECLARE @OneDB AS VARCHAR(255);
DECLARE @CmdToExec AS VARCHAR(MAX);
SET @DBs = 'db1,db2,db3,db4,db5,db6,db7,db8,db9,db10,db11,db12,db13,db14,db15,db16'
DECLARE DB_Cursor CURSOR FOR
SELECT SUBSTRING( ',' + @DBs + ',', n + 1,
CHARINDEX( ',', ',' + @DBs + ',', n + 1 ) - n - 1 ) AS "dbInfo"
FROM CommunityPAL.dbo.Numbers
WHERE SUBSTRING( ',' + @DBs + ',', n, 1 ) = ','
AND n < LEN( ',' + @DBs + ',' );
OPEN DB_Cursor;
FETCH NEXT FROM DB_Cursor INTO @OneDB;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @CmdToExec = 'USE ' + @OneDB;
EXEC @CmdToExec;
--statements to execute
FETCH NEXT FROM DB_Cursor INTO @OneDB;
END
CLOSE DB_Cursor
DEALLOCATE DB_Cursor
【问题讨论】:
-
"有一个我想循环访问的数据库列表,并为每个数据库删除并根据需要重新创建视图。" - 为什么?
-
需要将新字段添加到每个视图我有一个使用来自不同客户端数据库的视图的 Web 应用程序
标签: database tsql cursor views