我想通过使用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" "