Yei*_*or 0 sql sql-server dynamic-sql cursor
我正在尝试使用游标进行动态查询,我想为数据库上的每个表创建文件组,我有这个:
DECLARE @name VARCHAR(50)
DECLARE @query VARCHAR(50)
DECLARE vend_cursor CURSOR
FOR SELECT name FROM sys.tables order by name asc
OPEN vend_cursor
FETCH NEXT FROM vend_cursor;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'FG_'+@name
FETCH NEXT FROM vend_cursor INTO @name;
END
CLOSE vend_cursor
DEALLOCATE vend_cursor
Run Code Online (Sandbox Code Playgroud)
打印是因为这样我就可以看到文件组名称的样子,但我想添加以下内容: ALTER DATABASE AdventureWorks2012 ADD FILEGROUP FG_filegroupname
我知道我必须使用“exec sys.sp_executesql”,但是如何将其添加到我的查询中?提前致谢
是的,您可以使用 sp_executeSQL 执行此操作,但最重要的是您需要设置 GLOBAL 游标,因为 sp_executeSQL 与您正在执行的过程不在同一范围内。参见示例
DECLARE @SQL nvarchar(1024),
@name varchar(255);
SET @SQL = 'DECLARE vend_cursor CURSOR GLOBAL
FOR
SELECT name FROM sys.tables order by name asc';
EXECUTE sp_executesql @SQL;
OPEN vend_cursor
FETCH NEXT FROM vend_cursor INTO @name;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'FG_'+@name
FETCH NEXT FROM vend_cursor INTO @name;
END
CLOSE vend_cursor
DEALLOCATE vend_cursor
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8952 次 |
| 最近记录: |