Обработайте несколько избранных операторов в пакетном режиме при вызове Oracle из ADO.NET

Вы можете использовать любую из этих команд Vim Ex - Выход из нескольких окон и буферов :

  1. :qa :qall

    Выйдите из Vim, если только не было буферов, которые были изменены. (Используйте :bmod, чтобы перейти к следующему измененному буферу). Когда установлено «autowriteall», все измененные буферы будут записаны, например, :wqall.

    [1130]
  2. :conf qa :confirm qall

    Выход Vim. Вызовите подсказку, когда некоторые буферы были изменены. См. :confirm.

  3. :qa! :qall!

    Выход Vim. Любые изменения в буферах будут потеряны. Также см. :cquit, он делает то же самое, но выходит с ненулевым значением.

  4. :quita :quitall :quita! :quitall!

    То же, что и :qall.

  5. :wqa :wqall :xa :xall

    Запишите все измененные буферы и выйдите из Vim. Если существуют буферы без имени файла, которые доступны только для чтения или не могут быть записаны по другой причине, Vim не завершит работу.

  6. :conf wqa :confirm wqall :conf xa :confirm xall

    Запишите все измененные буферы и выйдите из Vim. Вызовите подсказку, когда некоторые буферы доступны только для чтения или не могут быть записаны по другой причине. Смотри :confirm.

  7. :wqa! :xa! :wqall! :xall!

    Запишите все измененные буферы, даже те, которые только для чтения, и выйдите из Vim. Если есть буферы без имени файла или которые не могут быть записаны по другой причине, Vim не выйдет.

Чтобы прочитать об этом в Vim, введите следующую команду Ex

:help window-exit
15
задан stuart donald 30 June 2009 в 09:01
поделиться

4 ответа

Вы должны написать анонимный блок pl / sql, который возвращает 3 указателя ref.

edit1: Здесь это делается в анонимном блоке pl / sql с одним курсором. Он должен работать и с тремя. Курсоры Oracle ref не блокируют данные, и они являются самым быстрым способом вернуть набор результатов из процедуры pl / sql или анонимного блока pl / sql.

http://www.oracle.com/technetwork/issue-archive/2006/06-jan/o16odpnet-087852.html

6
ответ дан 1 December 2019 в 04:10
поделиться

Как насчет:

var sql = @"
            select * from table1 UNION
            select * from table2 UNION
            select * from table3";
0
ответ дан 1 December 2019 в 04:10
поделиться

Почему бы вместо этого не использовать хранимые процедуры?

Но если вы хотите объединить их во встроенный запрос, вы можете использовать точку с запятой (;) для разделения операторов.

var sql = @"BEGIN
                select * from table1;
                select * from table2;
                select * from table3;
            END;";

ИЗМЕНИТЬ : Вы посмотрите этот вопрос SO .

EDIT2: Взгляните на этот ответ .

0
ответ дан 1 December 2019 в 04:10
поделиться

Пример на C# с несколькими курсорами и входным параметром:

string ConnectionString = "connectionString";
OracleConnection conn = new OracleConnection(ConnectionString);
StringBuilder sql = new StringBuilder();

sql.Append("begin ");
sql.Append("open :1 for select * from table_1 where id = :id; ");
sql.Append("open :2 for select * from table_2; ");
sql.Append("open :3 for select * from table_3; ");
sql.Append("end;");

OracleCommand comm = new OracleCommand(sql.ToString(),_conn);

comm.Parameters.Add("p_cursor_1", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);

comm.Parameters.Add("p_id", OracleDbType.Int32, Id, ParameterDirection.Input);

comm.Parameters.Add("p_cursor_2", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);

comm.Parameters.Add("p_cursor_3", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);

conn.Open();

OracleDataReader dr = comm.ExecuteReader();
11
ответ дан 1 December 2019 в 04:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: