database - 如何从存储过程中取回数据

标签 database sql-server-2008 tsql stored-procedures

我正在尝试从 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/

相关文章:

mysql - 用户验证值-存储在哪里

mysql - 如何保存用户调查对开放式问题的回答?

sql - 将 NVARCHAR 转换为货币值

sql-server-2008 - 获取 k 个值的所有排列 (k = 1...n)

sql-server - 无法在 SSMS 中查看 GEOGRAPHY(空间结果选项卡)

SQL 服务器查询 : how to check value within range

android.database.sqlite.SQLiteException : no such column: personname: , 同时编译 : SELECT id, personname FROM numbersTable

sql-server-2008 - 使用 KILL 命令终止数据库连接的应用程序

sql-server - 在 T-SQL 中执行 "Foreach Update"的最佳方法是什么?

sql - 将表格分组为 15 分钟间隔