我正在后端使用 Oracle 11g 开发一个 ASP.NET Web 应用程序。我编写了一个单独的 SP 用于从数据库表中获取用户登录数据和标志。请在 FetchUserLoginData() 方法中找到以下代码片段:
String spName = "FETCH_USER_LOGIN_ROLE_DATA";
OracleCommand dbCheckLogin=new OracleCommand();
OracleDataReader LoginDataReader=null;
dbCheckLogin = dbCon.GetDBCommand(spName,dbCheckLogin);
dbCheckLogin.Parameters.Add(new OracleParameter("USERID", LoginID));
dbCheckLogin.Parameters.Add(new OracleParameter("USERPWD", Password));
dbCheckLogin.Parameters.Add(new OracleParameter("USERGUI_ID", OracleType.VarChar,2000)).Direction = ParameterDirection.Output;
dbCheckLogin.Parameters.Add(new OracleParameter("ADMIN_FLG", OracleType.VarChar,20)).Direction = ParameterDirection.Output;
dbCheckLogin.Parameters.Add(new OracleParameter("CLOSED_FLG", OracleType.VarChar,20)).Direction = ParameterDirection.Output;
dbCheckLogin.Parameters.Add(new OracleParameter("LOCKED_FLG", OracleType.VarChar,20)).Direction = ParameterDirection.Output;
dbCheckLogin.Parameters.Add(new OracleParameter("LOGGEDIN_FLG", OracleType.VarChar,20)).Direction = ParameterDirection.Output;
dbCheckLogin.Parameters.Add(new OracleParameter("USER_FLG", OracleType.VarChar,20)).Direction = ParameterDirection.Output;
dbCheckLogin.Parameters.Add(new OracleParameter("SEASED_FLG", OracleType.VarChar,20)).Direction = ParameterDirection.Output;
LoginDataReader = dbCheckLogin.ExecuteReader();
while (LoginDataReader.Read())
{
user.USER_SL = Convert.ToString(LoginDataReader["USER_SL"]);
user.ISADMIN=LoginDataReader["ISADMIN"].ToString();
user.ISCLOSED = LoginDataReader["ISCLOSED"].ToString();
user.ISLOCKED = LoginDataReader["ISLOCKED"].ToString();
user.ISLOGGEDIN = LoginDataReader["ISLOGGEDIN"].ToString();
user.ISPOWERUSER = LoginDataReader["ISPOWERUSER"].ToString();
user.ISSEASED= LoginDataReader["ISSEASED"].ToString();
}
现在的问题是,当我尝试在没有任何 SP 的情况下运行时,只是编写和执行直接查询,没有问题,它可以很好地从数据库中获取数据。在 SP 的情况下,我得到一个例外:未找到数据。我每次都提供正确的用户名和密码,但它仍然无法获取任何数据。即使我尝试从 SQLDeveloper 或 PL/SQL 运行该过程,也没有发现任何问题。问题仅出在我尝试从服务器端编码执行 SP 时。