我有一个返回整数值的SP。 SP没有定义任何返回变量,它直接返回值,例如,返回-1,返回-2
我尝试了以下代码,但它提供了异常:
代码
AseParameter retval = cmd.Parameters.Add(“@ RETURN_VALUE”, SqlDbType.Int); retval.Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery(); //此行抛出异常
例外
NotSupportException
BindParameter - Int
如何阅读返回值?
修改
存储过程
IF OBJECT_ID('dbo.MySP') IS NOT NULL
BEGIN
DROP PROCEDURE dbo.MySP
IF OBJECT_ID('dbo.MySP') IS NOT NULL
PRINT '<<< FAILED DROPPING PROCEDURE dbo.MySP >>>'
ELSE
PRINT '<<< DROPPED PROCEDURE dbo.MySP >>>'
END
go
create procedure MySP
@param1 char(60),
@param2 char(3),
@param3 int,
@param4 char(4)
as
declare
@somefield1 char(1),
@somefield2 datetime,
If @param1 is null
return -1
If @param2 != "L"
return -2
more code here.....
答案 0 :(得分:1)
使用以下代码修复了该问题。我意识到,当这实际上是Sybase数据库时,我正在传递SqlDbType.Int。
AseParameter retval = new AseParameter(&#34; @ RETURN_VALUE&#34;,AseDbType.Integer); cmd.Parameters.Add(RETVAL); retval.Direction = ParameterDirection.ReturnValue; cmd.ExecuteNonQuery(); return(int)cmd.Parameters [&#34; @ RETURN_VALUE&#34;]。值;
答案 1 :(得分:0)
听起来你需要一个sqldatareader,因为你希望得到一个价值。
This question已经为您编写了代码。只需要适应你的情况。还有一些与一些相当不错的学习材料的良好链接。