Sql 我可以执行select返回的行吗?

Sql 我可以执行select返回的行吗?,sql,sql-server,Sql,Sql Server,我想知道是否可以制作一个脚本来执行返回的行。我有两行由我设计的select返回,它看起来像 更改表格Zamestanci drop DF_uuuuuuZamestanci_uuuDatum_uuuuu2e1bdc42 go sp_bindefault'abc','Zamestanci.datum_pridania' 我正在删除默认值并设置绑定默认值 谢谢您的帮助。如果您可以在一个批处理中运行所有语句,并且它们已经用分号正确终止,那么您可以构建一个SQL字符串并立即执行整个过程 DECLARE @

我想知道是否可以制作一个脚本来执行返回的行。我有两行由我设计的select返回,它看起来像

更改表格Zamestanci drop DF_uuuuuuZamestanci_uuuDatum_uuuuu2e1bdc42 go sp_bindefault'abc','Zamestanci.datum_pridania'

我正在删除默认值并设置绑定默认值


谢谢您的帮助。

如果您可以在一个批处理中运行所有语句,并且它们已经用分号正确终止,那么您可以构建一个SQL字符串并立即执行整个过程

DECLARE @sql NVARCHAR(MAX) = (SELECT SomeColumn
                              FROM [Table]
                              FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)');
EXECUTE sp_executesql @sql;
当然,如果要逐个执行语句,可以使用游标:

DECLARE sqlCursor CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY
FOR
    SELECT  SomeStatement
    FROM    [Table];

DECLARE @sql NVARCHAR(MAX);
OPEN sqlCursor;

FETCH NEXT FROM sqlCursor INTO @sql;

WHILE @@FETCH_STATUS = 0
BEGIN
    EXECUTE sp_executesql @sql;
    FETCH NEXT FROM sqlCursor INTO @sql;
END

您需要使用动态sql来实现类似的功能。将结果输出为文本,而不是网格,然后在查询窗口中复制+粘贴如果您想自动执行,可以使用
sp_executeSql
和光标。如果您想自动执行,请将您的选择包装到光标中,在循环中一次提取1个字符串,然后只执行提取的:exec(@sql),您需要从那里获取“GO”。它不是一个t-sql语句,它是SSMS中的默认批处理终止符。第一种方法很容易在应该是“批处理中唯一语句”的命令上失败,因为它没有批处理分隔符,所有命令都在一个批处理中执行