【问题标题】:Using output parameters when calling stored procedures with AsyncPoco使用 AsyncPoco 调用存储过程时使用输出参数
【发布时间】:2019-11-12 00:55:12
【问题描述】:

我正在执行一个 SQL Server 存储过程,它使用 AsyncPoco 返回单个输出参数:

CREATE  PROCEDURE [dbo].[GenerateId]
    (@RETVAL VARCHAR(12) OUTPUT) 
AS
    DECLARE @pkgID VARCHAR(12)

    BEGIN
        SELECT @pkgID = 'ABC' + '000'
        SELECT @RETVAL = @pkgID
    END
GO

我是这样称呼它的:

var spOutput = new SqlParameter("@RETVAL", System.Data.SqlDbType.VarChar)
{
    Direction = System.Data.ParameterDirection.Output,
    Size = 12,
};

var sql = $";EXEC [dbo].[GenerateId] @0 OUTPUT";

var response = await _dbAdapter.FetchAsync<dynamic>(sql, new object[] { spOutput });
return (string)spOutput.Value;

这是我得到的错误:

System.NullReferenceException:对象引用未设置为对象的实例。

在 System.Object.GetType()
在 AsyncPoco.Database.FormatCommand(String sql, Object[] args) 在 C:\Aldenteware\AsyncPoco\code\AsyncPoco\Database.cs:line 2279

【问题讨论】:

    标签: c# asynchronous orm poco


    【解决方案1】:

    我想通了:

    var spOutput = new SqlParameter("@RETVAL", System.Data.SqlDbType.VarChar)
    {
        Direction = System.Data.ParameterDirection.Output,
        Size = 12,
    };
    
    var sql = $";EXEC [dbo].[GenerateId] @@RETVAL = @0 OUTPUT";
    var sqlClass = new Sql();
    var s = sqlClass.Append(sql, spOutput);
    
    var response = await _dbAdapter.ExecuteAsync(s);
    return (string)spOutput.Value;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-19
      • 1970-01-01
      • 2012-11-24
      • 2019-08-13
      • 2018-04-29
      相关资源
      最近更新 更多