У меня есть хранимая процедура, которая выглядит следующим образом:
CREATE OR REPLACE PROCEDURE
Get_Username
(
p_Username IN user.USERNAME%TYPE,
p_ReturningUsername OUT user.Username%TYPE
)
IS
BEGIN
SELECT username INTO p_ReturningUsername FROM user WHERE p_Username = username;
EXCEPTION
WHEN NO_DATA_FOUND THEN
p_ReturningUsername := null;
END;
Я выполнил его из базы данных, и он отлично работал.
Когда я запускаю его из приложения c #, я не получаю никакого значения обратно.
public bool getUsername(string username)
{
OracleConnection connection = getConnection();
OracleCommand oracleCommand = new OracleCommand("Get_Username", connection);
oracleCommand.CommandType = CommandType.StoredProcedure;
oracleCommand.Parameters.Add("p_ReturningUsername", OracleDbType.Varchar2).Direction = ParameterDirection.Output;
oracleCommand.Parameters.Add("p_Username", OracleDbType.Varchar2).Value = username;
try
{
oracleCommand.ExecuteNonQuery();
}
catch (OracleException ex)
{
MessageBox.Show("Exception Message: " + ex.Message);
MessageBox.Show("Exception Source: " + ex.Source);
}
string tmp = oracleCommand.Parameters["p_ReturningUsername"].Value.ToString();
connection.Close();
return tmp == username;
}
В окне регистрации WPF мне нужно проверить, не занято ли уже имя пользователя.
Когда я выполняю этот код, я получаю пустую строку, когда это должно быть имя пользователя в пользовательской таблице.
Пожалуйста, помогите мне, спасибо заранее.