使用.NET OracleCommand的多行PL / SQL命令

时间:2009-02-04 00:18:05

标签: .net oracle

我正在使用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 个答案:

答案 0 :(得分:4)

我认为你只需输掉'\ r'字符。