原帖地址:

 

问题描述:

 

随着学习的进步,SQL语句变得越来越复杂。

一个SQL存储过程中,很可能调用多个存储过程。导致返回的数据凌乱不堪。  

请教如何清除掉,这些不需要的返回显示的数据。

特别是用 其它编程语言调用SQL时,会导致无法获取到正确的返回数据集。.....

例如:  

      【存储过程A】有多个SELECT语句,    
       SELECT @A;    
       EXEC @A=dbo.[存储过程B]  @B OUTPUT;          --此[存储过程B]中也包含了SELECT 语句    
       SELECT @B,@A;           

我要只返回显示"SELECT @B,@A;  "的结果,应该怎么写?

 

解决方案:

 

如何去掉OUTPUT输出?

用INSERT EXEC去拼接

 

CREATE TABLE #Temp   (       outputData varchar(MAX)    )GOINSERT INTO #Temp   (      outputData    )    EXEC master.sys.xp_cmdshell '?'

 

注意:INSERT EXEC语句不能嵌套,请小心使用。

 

如何控制SELECT结果集的输出?

加个参数判断是否回传结果

 

CREATE PROCEDURE NSP_TEST     @IsReturn        BIT        = 1  -- 是否回传结果    AS    BEGIN         IF @IsReturn = 1         BEGIN            SELECT *            FROM TableName         END    END    GOEXEC NSP_TEST @IsReturn = 0