Все
У меня следующий запрос:
INSERT INTO T1(CODE, NAME) VALUES(:Code, :Name) RETURNING 'Hello' INTO :NewId
Этот код работает нормально (я проверил его в sqldeveloper).
Я использовал команду Oracle из Oracle.ManagementDataAccess:
cmd.Text = @"INSERT INTO T1(CODE, NAME) VALUES(:Code, :Name) RETURNING
'Hello' INTO :NewId";
var codeParameter = new OracleParameter("Code", OracleDbType.Varchar2);
codeParameter.Value = templateName;
cmd.Parameters.Add(codeParameter);
var nameParameter = new OracleParameter("Name",
OracleDbType.Varchar2);
nameParameter.Value = reportProps.Description;
cmd.Parameters.Add(nameParameter);
var newIdParameter = new OracleParameter("NewId", OracleDbType.Varchar2,
100, System.Data.ParameterDirection.Output);
cmd.Parameters.Add(newIdParameter);
cmd.ExecuteNonQuery();
ExecuteNonQuery () работает нормально, но у меня есть пустой newIdParameter.Value.
Если я возвращаю целое число вместо «Hello» и меняю OracleDbType.Varchar2 с OracleDbType.Int32Я получу правильное число в newIdParameter.Value.
Что я делаю неправильно, когда привязываюсь к выходному параметру varchar2?