У меня есть следующий код:
try
{
conn.Open();
OracleCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "collikx.webadmin.usp_update_license";
cmd.Parameters.Add(new OracleParameter("licenseSeqNo", OracleDbType.Int32, 30, 228, ParameterDirection.Input));
cmd.Parameters.Add(new OracleParameter("thirdPartyId", OracleDbType.Int32, 30, 2, ParameterDirection.Input));
cmd.Parameters.Add(new OracleParameter("licenseNumber", OracleDbType.Varchar2, 12, "tttttttttttt", ParameterDirection.Input));
cmd.Parameters.Add(new OracleParameter("licenseState", OracleDbType.Char, 2, "CT", ParameterDirection.Input));
cmd.Parameters.Add(new OracleParameter("licenseLevel", OracleDbType.Varchar2, 2, "E1", ParameterDirection.Input));
cmd.Parameters.Add(new OracleParameter("licenseType", OracleDbType.Char, 2, "QQ", ParameterDirection.Input));
cmd.Parameters.Add(new OracleParameter("cutTap", OracleDbType.Char, 1, "Y", ParameterDirection.Input));
cmd.Parameters.Add(new OracleParameter("status", OracleDbType.Varchar2, 30, "NOTVALID", ParameterDirection.Input));
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
throw;
}
finally { conn.Close(); }
Сохраненный процесс:
PROCEDURE usp_update_license( thirdPartyId integer,
licenseSeqNo integer,
licenseNumber VARCHAR2,
licenseState VARCHAR2,
licenseLevel VARCHAR2,
licenseType VARCHAR2,
cutTap VARCHAR2,
status VARCHAR2) AS
begin
update CNTRCTR_LCNS_INFO
set cntrctr_lcns_no = licenseNumber,
lcns_st_cd = licenseState,
certfn_level_type_cd = licenseLevel,
cntrctr_type_cd = licenseType,
cut_tap_authy_ind = cutTap,
stat_type_nm = status
where third_party_id = thirdPartyId and cntrctr_lcns_seq_no = licenseSeqNo
;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE;
end usp_update_license;
Когда я выполняю это, ничего в базе данных не изменяется.Я знаю, что он вызывается из C #, потому что, если я закомментирую одну из строк параметров, я получаю сообщение об ошибке, что нет никаких параметров.Однако значение «QQ» для licenseType в коде C # должно нарушать FK-ограничение, но я не получаю сообщения об этом.У меня есть другие хранимые процедуры, называемые точно так же, как они работают нормально ...
Я должен отметить, что выполнение хранимого процесса напрямую через sql developer работает.
Что такоея делаю неправильно?