使用sp_executesql而不返回行集

时间:2013-11-21 16:08:33

标签: sql sql-server stored-procedures sql-server-2012

在存储过程中,我正在构建使用sp_executesql过程执行的动态SQL语句。

动态SQL语句可以是存储过程,即:

  • 不返回行集
  • 返回一行
  • 返回多个行集

初始存储过程本身返回其他行集。我想只返回它们,并且不从内部过程返回行集。

通常,我想强制以下语句不返回任何内容:

DECLARE @DynamicSQLStatement NVARCHAR(MAX)

SET @DynamicSQLStatement = N'SELECT 1 SELECT 2 SELECT 3 SELECT 4 SELECT 5'

EXEC sp_executesql @DynamicSQLStatement

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:0)

我猜你可以通过这样做来调整你的商店程序。

CREATE PROCEDURE usp_StopMessageProc
@StopMsg bit = 0
AS
BEGIN
 SET NOCOUNT ON;

    DECLARE @Sql VARCHAR(MAX);

    SET @Sql = '';

    SET @Sql = 'SELECT Column1, Column2, Column3....  ';

    IF @StopMsg = 1
         SET @Sql = @Sql + 'INTO #TempDeleteMe';

    SET @Sql = @Sql +     
    'FROM dbo.SomeTable ';

    EXEC(@Sql);
END
GO

通过defualt你的proc将做任何最好的事情但是当@StopMsg设置为1时它会抑制返回消息/结果集。