Ошибка ORA-00911 при выполнении запроса
У меня есть 3 формы с таблицами которые загружаются с ORACLE. При нажатии на кнопку в одной из форм должен выполняться следующий запрос:
private void button1_Click(object sender, EventArgs e)
{
using (Oracle.DataAccess.Client.OracleConnection connection = new Oracle.DataAccess.Client.OracleConnection(con.ConnectionString))
{
using (OracleCommand command = connection.CreateCommand())
{
command.CommandText = "UPDATE issuence " +
"SET issue_item_name = ( " +
"SELECT sklad.item_name " +
"FROM sklad " +
"WHERE issuence.sklad_item_id = sklad.item_id) " +
"WHERE EXISTS ( " +
"SELECT 1 " +
"FROM sklad " +
"WHERE issuence.sklad_item_id = sklad.item_id); ";
connection.Open();
command.ExecuteNonQuery();
}
}
}
Но вместо этого у меня появляется ошибка ORA-00911. Пробовал убирать точку с запятой в конце запроса, но тогда приложение намертво зависает.
Ответы (1 шт):
Автор решения: ESkri
→ Ссылка
Вот это должно работать побыстрее.
command.CommandText =
"merge into ISSUENCE d " +
"using ( " +
" select " +
" i.rowid as r, " +
" s.item_name as issue_item_name " +
" from " +
" ISSUENCE i " +
" join SKLAD s " +
" on i.sklad_item_id = s.item_id " +
" where " +
" decode(i.issue_item_name, s.item_name, 0) is null " +
") s " +
"on (d.rowid = s.r) " +
"when matched then update set " +
" d.issue_item_name = s.issue_item_name ";