Я пытаюсь обновить столбец типа Oracle VARRAY из С#C#

Место общения программистов C#
Anonymous
Я пытаюсь обновить столбец типа Oracle VARRAY из С#

Сообщение Anonymous »

Я пытаюсь обновить столбец VARRAY в таблице Oracle с помощью Oracle.ManagedDataAccess.Client в C#
У меня есть следующий код:

Код: Выделить всё

OracleCommand cmd2 = new OracleCommand(
"update mytable set hcodes = :hcodes where ich = 'xxx'", ora);
cmd2.Parameters.Add(new OracleParameter{ParameterName = ":hcodes",UdtTypeName = "HCODE_ARRAY"});
cmd2.Prepare();
cmd2.Parameters[":hcodes"].Value = new string[] { "ABCD", "DEFG" };
cmd2.ExecuteNonQuery();
Когда я выполняю этот код, я получаю:

Oracle.ManagedDataAccess.Client.OracleException: 'ORA-00932: несовместимые типы данных: ожидаемый HCODE_ARRAY получил CHAR'

Код: Выделить всё

HCODE_ARRAY
определяется как:

Код: Выделить всё

CREATE OR REPLACE TYPE HCODE_ARRAY
AS
VARRAY(5) of varchar2(4);
/
Изменить: 5/8 Этот непараметризованный код работает:

Код: Выделить всё

OracleCommand cmd2 = new OracleCommand(
"update mytable set hcodes = scrpt_app.HCODE_ARRAY('E123','E456') where ich = 'xxx'", ora);
Итак, я попробовал это:

Код: Выделить всё

OracleCommand cmd2 = new OracleCommand(
"update mytable set hcodes =
HCODE_ARRAY(:hcodes) where ich = 'xxx'", ora);
cmd2.Parameters.Add(":hcodes", OracleDbType.Varchar2);
cmd2.Parameters[":hcodes"].Value = "'E123','E456','E789'";
cmd2.ExecuteNonQuery();
но происходит сбой с сообщением «ORA-22814: значение атрибута или элемента больше, чем указано в типе»

Вернуться в «C#»