【发布时间】:2013-11-21 16:08:33
【问题描述】:
在存储过程中,我正在构建使用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
有没有办法做到这一点?
【问题讨论】:
-
如果您必须使用动态 SQL 并且它返回一个、无或多个结果集,并为您提供预期的结果集,为什么要更改它?????
-
因为
Dynamic SQL应该做类似INSERT记录的事情,但我不需要像All records are inserted或List with inserted records那样显示其内部消息 -
哦,如果只是为了抑制
n row(s) affected消息,那么SET NOCOUNT ON是你的朋友。 -
不,不是这条消息。想象一个在表中插入一些记录并返回两个行集的过程 - 一个状态为“OK”/“Not ok”,第二个列出所有插入的行。我不想显示此信息,因为初始过程正在返回自己的行集。
标签: sql sql-server stored-procedures sql-server-2012