Mã sau phù hợp với tôi.
NB:Mã pl / sql của bạn được gọi là hàm KRIST.f_Login, nhưng c # của bạn gọi là krist.p_login
NB2:Mã pl / sql của bạn sử dụng Varchar2, nhưng c # của bạn đã sử dụng varchar
NB3:Tôi đang sử dụng Oracle.DataAccess.dll
NB4:Tôi giả sử kích thước bộ đệm giá trị trả về của bạn có thể là 1, nhưng hãy thử các kích thước khác nhau.
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
int RETURN_VALUE_BUFFER_SIZE = 32767;
OracleCommand cmd = new OracleCommand();
try {
cmd.Connection = conn;
cmd.CommandText = "KRIST.f_Login";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("returnVal", OracleDbType.Varchar2, RETURN_VALUE_BUFFER_SIZE);
cmd.Parameters["returnVal"].Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add("userName", OracleDbType.Varchar2);
cmd.Parameters["userName"].Value = "kristian";
cmd.Parameters.Add("password", OracleDbType.Varchar2);
cmd.Parameters["password"].Value = "kristian";
cmd.ExecuteNonQuery();
string bval = cmd.Parameters["returnVal"].Value.ToString();
return bval;
} catch (Exception e) {
// deal with exception
} finally {
command.Dispose();
connection.Close();
connection.Dispose();
}