Как исправить ошибку ORA-00923, при попытке получить и использовать таблицы из OracleSQL посредством OleDB, приложение Net.Framework, Windows Forms?

У меня есть четыре таблицы, к которым я обращаюсь, и загоняю их данные в DataGridView. Имена таблиц находятся в словаре, и имя выводимой таблицы определяется нажатием на кнопку с названием.

        private string currentTable;

    private Dictionary<string, int> numberOfColumns =
    new Dictionary<string, int> { {"Departments", 1 },
                                      {"Departments_Employees",  2 },
                                      {"Employees",       5 },
                                       {"Projects",    6 }
                                  };

    private void GetAndFillTable(string tableName)
    {
        int value = -1;
        if (numberOfColumns.TryGetValue(tableName, out value))
        {
            lastIndexTable = value;
            currentTable = tableName;
            LoadData();
        }
        else
        {
            MessageBox.Show($"Таблица {tableName} не найдена", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

    //пример смены таблицы

    private void ChTableToEmpls_Click_1(object sender, EventArgs e)
    {
        GetAndFillTable("Employees");
    }


OleDbDataAdapter = new OleDbDataAdapter("Select *, 'Delete' AS [Delete] FROM " + currentTable, OleDbConnection);

            OleDbCommandBuilder = new OleDbCommandBuilder(OleDbDataAdapter);

            OleDbCommandBuilder.GetInsertCommand();
            OleDbCommandBuilder.GetUpdateCommand();
            OleDbCommandBuilder.GetDeleteCommand();

            dataSet = new DataSet();

            OleDbDataAdapter.Fill(dataSet, currentTable);

            dataGridView1.DataSource = null;
            dataGridView1.DataSource = dataSet.Tables[currentTable];

            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {

                DataGridViewLinkCell linkCell = new DataGridViewLinkCell();
                dataGridView1[lastIndexTable, i] = linkCell;
            }

            dataGridView1.Refresh();
            dataGridView1.Update();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

При запущенном приложении, при попытке вывести какую-либо таблицу по нажатию кнопки, выбрасывается исключение ORA-00923: FROM Keyword not found Where Expected

Подобный код до этого использовался с MS SQL Server.


Ответы (1 шт):

Автор решения: 0xdb

Потому что, SQL диалекты SQL Server и Oracle отличаются. Следует проверять работоспособность запросов в любом инструменте для отладки запросов.

В SQL Server будет работать:

Select *, 'Delete' AS [Delete] FROM tab

В Oracle этот же запрос синтаксически неверен, и должен быть изменён:

Select tab.*, 'Delete' AS "Delete" FROM tab
→ Ссылка