遇到错误:值不在预期范围内

  • 本文关键字:范围内 错误 遇到 c# oracle
  • 更新时间 :
  • 英文 :


我正在访问oracle数据库,我是api c#的初学者,当我尝试执行我的代码时,我遇到了这个错误消息,根据我的异常处理程序"值不属于预期范围"。如有任何意见或更正,将不胜感激。

Oracle代码:

create or replace PACKAGE BODY PKGFAETEST AS
PROCEDURE CheckUser(uNAME IN VARCHAR2,
pWORD IN VARCHAR2,
po_refcsr OUT cursor_type)
AS                 
BEGIN 
OPEN po_refcsr FOR
SELECT
A1.ID,
A1.USERNAME,
A1.PASS,
A1.FIRSTNAME,
A1.LASTNAME
FROM
FAE_TEST_USERS A1
WHERE
A1.USERNAME = uNAME
AND A1.PASS = pWORD;
END;
END PKGFAETEST;

c#代码:

public bool checkUser(string uName, string pWord)
{
bool result = false;
try
{
string dbUName = string.Empty;
string dbPWord = string.Empty;

using (OracleConnection conn = new OracleConnection(TNS))
{
OracleCommand objCmd = new OracleCommand();
objCmd.Connection = conn;
objCmd.CommandText = "PKGFAETEST.CheckUser";
objCmd.CommandType = CommandType.StoredProcedure;
objCmd.Parameters.Add("uNAME", SqlDbType.VarChar).Value = uName;
objCmd.Parameters.Add("pWORD", SqlDbType.VarChar).Value = pWord;
conn.Open();
using (OracleDataReader reader = objCmd.ExecuteReader())
{
while (reader.Read())
{
if (reader["USERNAME"] != DBNull.Value)
{
dbUName = Convert.ToString(reader["USERNAME"]);
}
if (reader["PASS"] != DBNull.Value)
{
dbPWord = Convert.ToString(reader["PASS"]);
}
result = true;
}
}
conn.Close();
conn.Dispose();
}
}
catch (Exception e)
{
Console.WriteLine("Exception caught: {0}", e);
}
return result;
}

解决了我的问题:

我只是改变了这行c#代码:

objCmd.Parameters.Add("uNAME", SqlDbType.VarChar).Value = uName;
objCmd.Parameters.Add("pWORD", SqlDbType.VarChar).Value = pWord;

:

objCmd.Parameters.Add("uNAME", OracleDbType.Varchar2).Value = uName;
objCmd.Parameters.Add("pWORD", OracleDbType.Varchar2).Value = pWord;
objCmd.Parameters.Add("po_refcsr", OracleDbType.RefCursor).Direction = ParameterDirection.Output;

相关内容

最新更新