原帖地址: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去拼接
1
2
3
4
5
6
7
8
9
10
|
CREATE
TABLE
#
Temp
(
outputData
varchar
(
MAX
)
)
GO
INSERT
INTO
#
Temp
(
outputData
)
EXEC
master.sys.xp_cmdshell
'?'
|
注意:INSERT EXEC语句不能嵌套,请小心使用。
如何控制SELECT结果集的输出?
加个参数判断是否回传结果
1
2
3
4
5
6
7
8
9
10
11
12
|
CREATE
PROCEDURE
NSP_TEST
@IsReturn
BIT
= 1
-- 是否回传结果
AS
BEGIN
IF @IsReturn = 1
BEGIN
SELECT
*
FROM
TableName
END
END
GO
EXEC
NSP_TEST @IsReturn = 0
|
本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1586056 ,如需转载请自行联系原作者