在前段时间和老师做一个系统时,在mssql下面写存储过程时遇到output型返回值与return 的返回值的问题;
经过一番尝试算是明白了,拿出来和分享一下;
return 是mssql 里自定义的返回的关键字,他的使用比较简单
eg
select * from student where dep=@dep
return @@rowcount
return @@rowcount返回影响的行数,
对于这种就可以使用返回,在sqlhelper中只需用cmd.Parameters["ReturnValue"].Value,用ReturnValue来取返回值
而对于output型返回值 如果也用ReturnValue来去返回值是会出现异常的,而因当根据output的参数名来返回,
eg
CREATE PROCEDURE sp_higheducation_articlerole_getcredbycondition
@CategoryID nvarchar(16),
@AuthorPlace nvarchar(16),
@grade int output
AS
select @grade=GetCred from ArticleRole where CategoryID=@CategoryID and AuthorPlace=@AuthorPlace
GO
在sqlhelper中
if (cmd.Parameters[grade].Value.ToString() == "")
{
return 0;
}
else
{
return int.Parse(cmd.Parameters[grade].Value.ToString());
}
当然这是一个output型返回值,对于多个output型返回值则应填充到ds,dt中了
