原帖地址:http://bbs.51cto.com/viewthread.php?tid=1133377&extra=&page=1
问题描述:
随着学习的进步,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)
)
GO
INSERT 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
GO
EXEC NSP_TEST @IsReturn = 0