Многострочная команда PL / SQL с .NET OracleCommand - PullRequest
0 голосов
/ 04 февраля 2009

Я использую System.Data.OracleClient.OracleCommand, чтобы создать таблицу и заполнить ее некоторыми данными. Используемый мной запрос выполняется нормально в PS / SQL Developer, однако, когда я пытаюсь выполнить его из приложения .NET, я получаю эту ошибку:

ORA-06550: line 1, column 20:
PLS-00103: Encountered the symbol "" when expecting one of the following:

   begin function package pragma procedure subtype type use
   <an identifier> <a double-quoted delimited-identifier> form
   current cursor

Столбец 20 находится именно там, где заканчивается первая строка. Как только я удаляю символы конца строки (\ r \ n) из команды, все начинает работать.

Интересно, есть ли какой-то скрытый параметр конфигурации для включения многострочных запросов для Oracle?

Вот код:

               var text = @"declare cnt number;
begin

 select count(*) into cnt from all_tables
 where table_name = 'TABLE_A';


if cnt = 1 then
   begin 
      execute immediate 'truncate table TABLE_A';
      execute immediate 'drop table TABLE_A';
   end;
end if;

execute immediate 'create table TABLE_A as 
 (SELECT DISTINCT v.ID, g.ext_id FROM VIEW_A v
 JOIN TABLE_B B ON v.id = B.Id
 WHERE YEAR1 = ''2008'')';

end;");

            var createTempTable = new OracleCommand(text, conn);
            createTempTable.CommandType = CommandType.Text;
            conn.Open();

            try
            {
                createTempTable.ExecuteNonQuery();
            }
            catch(Exception ex)
            {
                throw;
            }
            finally
            {
                conn.Close();    
            }

Спасибо за вашу помощь

1 Ответ

4 голосов
/ 04 февраля 2009

Я думаю, вам нужно потерять только символы '\ r'.

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