在oracle存储过程中抛出错误的ExecuteScalar()方法和游标

时间:2014-12-10 16:17:11

标签: c# asp.net oracle

我想通过使用ExecuteScalar()方法从oracle数据库通过oracle存储过程获取用户的id(userid)来获取用户的出生日期。下面是这个代码 -

在.net数据访问层

public DateTime GetuserDOB (int userid)
{
    using (OracleCommand command = new OracleCommand("PKG_INFORMATION.SP_ GetuserDOB "))
    {
        command.CommandType = CommandType.StoredProcedure;
        command.Parameters.Add("userid ", OracleDbType.Int32, userid, ParameterDirection.Input);
        command.Parameters.Add("UserDOBCursor", OracleDbType.RefCursor, ParameterDirection.Output);
        return orcleHelper.GetDateValue(command);
    }
}

在数据库帮助程序类

public  DateTime GetDateValue(OracleCommand command)
{
    using (OracleConnection conn = new OracleConnection(_ConnectString))
    {
        conn.Open();
        command.Connection = conn;
        object objDate = null;
        DateTime  returneddate  = new DateTime();
        objDate = command.ExecuteScalar();
        returneddate  = (objDate == DBNull.Value) ? DateTime.MinValue : (DateTime) objDate;

        return returneddate;
   }
}

oracle数据库中的存储过程

PROCEDURE SP_ GetuserDOB
(
  userid IN int,
  UserDOBCursor  OUT Page

)
AS
BEGIN
 OPEN UserDOBCursor  FOR 
   SELECT  USER_BIRTH_TIME  FROM  USERS WHERE USER_ID = userid;   
  EXCEPTION
        WHEN no_data_found THEN
        RAISE_APPLICATION_ERROR ( -20040,'Unable to retrieve the date of  birth');
 END SP_ GetuserDOB; 

投掷低于错误

  

算术运算导致溢出。

有人可以帮助我吗?

非常感谢。

注意 - 如果我没有使用光标我收到错误

" 参数绑定无效 参数名称:userid" "

0 个答案:

没有答案