powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB.NET + Oracle. Не могу обновить значение тега в XML
1 сообщений из 1, страница 1 из 1
VB.NET + Oracle. Не могу обновить значение тега в XML
    #39221703
Warlock86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется программа, извлекающая из таблицы значение поля типа VARCHAR2, в котором хранится XML, и меняющая значение одного тега. До недавнего времени всё работало прекрасно. Теперь же при выполнении программы значение поля остаётся прежним, притом, что ни о каких ошибках программа не сообщает.

Обновление значения выглядит так:

Код: vbnet
1.
2.
3.
4.
com.CommandText = "update table1 set xmlfield=updatexml(xmltype(xmlfield),'/root/Level1/Level2/Val/text()',:p_val).getStringVal() where id=:p_id"
com.Parameters.Add(":p_val", OracleDbType.Varchar2).Value = "123456"
com.Parameters.Add(":p_id", OracleDbType.Decimal).Value = 7890
com.ExecuteNonQuery()



Пробовал использовать другую функцию:
Код: vbnet
1.
2.
3.
4.
com.CommandText = "update table1 set xmlfield=xmlquery('copy $i := $p1 modify (for $j in $i/root/Level1/Level2/Val return replace value of node $j with $p2) return $i' PASSING xmltype(xmlfield) AS ""p1"",:p_val AS ""p2"" RETURNING CONTENT).getStringVal() where id=:p_id"
com.Parameters.Add(":p_val", OracleDbType.Varchar2).Value = "123456"
com.Parameters.Add(":p_id", OracleDbType.Decimal).Value = 7890
com.ExecuteNonQuery()



Всё осталось как было - ошибок не возвращает, но и значение не меняет.

При попытке посмотреть, что возвращает UpdateXML:

Код: vbnet
1.
2.
3.
4.
com.CommandText = "select updatexml(xmltype(xmlfield),'/root/Level1/Level2/Val/text()',:p_val).getStringVal() from table1 where id=:p_id"
com.Parameters.Add(":p_val", OracleDbType.Varchar2).Value = "123456"
com.Parameters.Add(":p_id", OracleDbType.Decimal).Value = 7890
MsgBox(com.ExecuteScalar)



Выводится пустая строка. Как и в случае с другой функцией:

Код: vbnet
1.
2.
3.
4.
com.CommandText = "select xmlquery('copy $i := $p1 modify (for $j in $i/root/Level1/Level2/Val return replace value of node $j with $p2) return $i' PASSING xmltype(xmlfield) AS ""p1"",:p_val AS ""p2"" RETURNING CONTENT).getStringVal() from table1 where id=:p_id"
com.Parameters.Add(":p_val", OracleDbType.Varchar2).Value = "123456"
com.Parameters.Add(":p_id", OracleDbType.Decimal).Value = 7890
MsgBox(com.ExecuteScalar)



В TOAD'е все SELECT'ы и UPDATE'ы выполняются, а в VB-приложении - нет.

СУБД - Oracle 12c x64 установлена на Windows Server 2012 R2 Standard.

Подскажите, пожалуйста, в чём может быть проблема. Самое странное, что код я уже давно не менял, но внезапно он перестал работать.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB.NET + Oracle. Не могу обновить значение тега в XML
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]