如何从存储过程中获取返回值

时间:2016-05-22 08:20:57

标签: c# stored-procedures return-value sybase

我有一个返回整数值的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.....

2 个答案:

答案 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已经为您编写了代码。只需要适应你的情况。还有一些与一些相当不错的学习材料的良好链接。