Выполнить оператор Alter Tablespace из C # Visual Studio без хранимой процедуры - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть требование добавить файл данных или изменить размер файла данных из программы внешнего интерфейса C # без какой-либо хранимой процедуры в базе данных.

Как это можно сделать?

Label1.text  =Tablespace name
textbox1.text = location of datafile
textbox2.text = name of the datafile

Вотпример кода, но когда я запускаю его, я получаю сообщение об ошибке:

ORA-00900: недопустимый оператор SQL

Код:

private void button1_Click(object sender, EventArgs e)
{
    string sqla = @"alter tablespace '" + label1.Text + "' add datafile '" + textBox1.Text + "' size " + textBox2.Text +"M";
    OracleConnection conn3 = new OracleConnection(); 
    conn3.ConnectionString = connectform.connectionString;
    conn3.Open(); 
    OracleCommand cmd3 = new OracleCommand("sqla", conn3);
    cmd3.CommandType = CommandType.Text;
    cmd3.ExecuteNonQuery();
    conn3.Close();
}

1 Ответ

0 голосов
/ 15 декабря 2018

Есть ли у драйвера метод ExecuteOracleNonQuery?Возможно, стоит попробовать это вместо ExecuteNonQuery.

Если не повезет с этим ...

Я не уверен в этом, но мое подозрение, возможно, водитель не распознает ALTER TABLESPACE.

Если это так, вы можете попробовать обернуть это в блок PLSQL и использовать EXECUTE IMMEDIATE, что-то вроде:

private void button1_Click(object sender, EventArgs e)
{
    string sqla = @"BEGIN EXECUTE IMMEDIATE 'alter tablespace " + label1.Text + " add datafile '" + textBox1.Text + "' size " + textBox2.Text +"M'; END;";
    OracleConnection conn3 = new OracleConnection(); 
    conn3.ConnectionString = connectform.connectionString;
    conn3.Open(); 
    OracleCommand cmd3 = new OracleCommand("sqla", conn3);
    cmd3.CommandType = CommandType.Text;
    cmd3.ExecuteNonQuery();
    conn3.Close();
}

Это 'скрывает' ALTER TABLESPACE оттам драйвер, вместо этого представляя блок PLSQL, с которым он должен счастливо справиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...