Aag*_*nor 0 c# stored-procedures sql-server-2008
我使用SQL Server 2008数据库中的以下存储过程将值返回到我的C#-Program
ALTER PROCEDURE [dbo].[getArticleBelongsToCatsCount]
@id int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @result int;
set @result = (SELECT COUNT(*) FROM art_in_cat WHERE child_id = @id);
return @result;
END
Run Code Online (Sandbox Code Playgroud)
我使用SQLCommand-Object来调用此存储过程
public int ExecuteNonQuery()
{
try
{
return _command.ExecuteNonQuery();
}
catch (Exception e)
{
Logger.instance.ErrorRoutine(e, "Text: " + _command.CommandText);
return -1;
}
}
Run Code Online (Sandbox Code Playgroud)
直到最近,一切正常.突然之间,存储过程返回-1.起初,我怀疑,ExecuteNonQuery-Command会导致和Exception,但是当单步执行该函数时,它会显示没有抛出Exception,返回值直接来自return _command.ExecuteNonQuery();
我检查了以下参数,它们是预期的: - 连接对象被设置为具有正确访问值的正确数据库 - SP的参数在那里并包含正确的类型,方向和值
然后我通过SQLManager检查了SP,我使用了相同的参数值,例如我的C#带来的结果为-1(顺便说一句.我在我的C'程序中检查了一些参数值,并且它们返回-1)但是在管理器中,SP返回正确的值.
看起来我的C#编程的调用有点被窃听,但由于我没有得到任何错误(它只是来自SP的-1),我不知道,在哪里寻找解决方案.
ExecuteNonQuery将返回受INSERT,UPDATE或DELETE操作影响的行数,而不是存储过程的返回值.如果它过去有效,您的查询是否有可能修改数据?
要获取存储过程的返回值,请使用ParameterDirection.ReturnValue向命令添加参数.在调用ExecuteNonQuery()之后,将使用存储过程的返回值填充该参数.
| 归档时间: |
|
| 查看次数: |
501 次 |
| 最近记录: |