我正在尝试从 t-sql (sql server 2008) 调试\执行一个 SP,当我执行以下 sql 时,它只返回一条消息“命令成功完成”。
我知道 SP 正在通过 @RETURN_VALUE 参数返回表中的数据,我如何让它显示在 sql 查询窗口中。
exec STARMS.dbo.GetMetaData @@Assembly=13366,@@Namespace=NULL,@@ParameterName=NULL,@@Standard=0,@@Timestamp=NULL
SP 看起来像这样(删除了主体)有趣的部分是创建临时表然后返回临时表的内容:
CREATE PROCEDURE [dbo].[GetMetaData]
@@Assembly Sql_Variant = NULL,
@@Namespace Varchar(30) = NULL,
@@ParameterName Varchar(40) = NULL,
@@Standard Bit = 0,
@@Timestamp DateTime = NULL
AS
SET NOCOUNT ON
DECLARE @ResultTable TABLE (AssemblyId Int, Namespace Varchar(30), ParameterName Varchar(40), Value Varchar(100))
-- Does loads of stuff and then inserts into @ResultTable table...
SET NOCOUNT OFF
-- Return the result
SELECT AssemblyId, Namespace, ParameterName, [Value]
FROM @ResultTable
RETURN
注意:我问这个问题的原因是因为我正在尝试查看 SQL Server 2008 中 SP 的性能,但我不确定为什么这不会在查询窗口中返回数据。
最佳答案
检查您的 SP 完整代码,可能某处有 RETURN 语句,因此 - SP 不会返回任何数据(注意 IF SomeContition IS TRUE RETURN
):
CREATE PROCEDURE [dbo].[GetMetaData]
@@Assembly Sql_Variant = NULL,
@@Namespace Varchar(30) = NULL,
@@ParameterName Varchar(40) = NULL,
@@Standard Bit = 0,
@@Timestamp DateTime = NULL
AS
SET NOCOUNT ON
DECLARE @ResultTable TABLE (AssemblyId Int, Namespace Varchar(30), ParameterName Varchar(40), Value Varchar(100))
-- Does loads of stuff and then inserts into @ResultTable table...
IF SomeContition IS TRUE RETURN
SET NOCOUNT OFF
-- Return the result
SELECT AssemblyId, Namespace, ParameterName, [Value]
FROM @ResultTable
RETURN
关于database - 如何从存储过程中取回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9228001/