【发布时间】:2018-10-14 21:37:02
【问题描述】:
如何向MVC Core2团队报告bug,存储过程输出参数返回null,
这是我的代码
var p = new SqlParameter
{
ParameterName = "token",
DbType = System.Data.DbType.String,
Size = 100, Value = "Sarah",
Direction = System.Data.ParameterDirection.Output
};
var z = p.SqlValue;
var resp = await _context.Database.ExecuteSqlCommandAsync("exec dbo.yourstoredprocedure {0}, {1}","test", p);
var y = p.SqlValue;
var x = p.Value;
resp总是-1,x和y都是null,存储过程很简单
create PROCEDURE [dbo].[yourstoredprocedure]
( @varone nvarchar(max),
@vartwo nvarchar(50) OUTPUT)
AS
insert into test (two, three) select @varone, @vartwo'
SET @vartwo = scope_identity()
return @vartwo;
【问题讨论】:
-
你没有声明
@varfour。我希望它返回NULL因为 SP 正在生成错误。此外,您的INSERT末尾有一个未封闭的报价单。您将@vartwo作为OUTPUT参数,但您没有在SP 中为其分配任何值,然后您在@varfour上使用RETURN(不要使用RETURN)(其中,如我说,是未申报的)。 SP 充满了语法错误,我怀疑这根本不是您的应用程序的问题。 -
抱歉,我已经更正了 sp,但这不是问题,因为返回值始终为 null
-
总是假设你搞砸了。即使是经验丰富的程序员,这也是一个很好的建议。当您开始将问题归咎于框架时,您将停止寻找解决方案。特别是在这种情况下,一个会导致 SP 返回 null 的通用错误会如此普遍,以至于已经存在与它相关的问题,并且会快速修复。鉴于它是开源的,并且每天只有数百万开发人员使用这些东西,因此很可能会来自社区的修复,这可能是问题的一部分。换句话说,它几乎肯定不是一个错误。
标签: sql-server asp.net-core output