| Предыдущая тема :: Следующая тема   | 
	 
	
	
		| Автор | 
		Сообщение | 
	 
	
		Viton-Zizu Участник
 
  Вступление в Клуб: 10.12.2015
  | 
		
			
				 Чт Дек 10, 2015 07:20   Загрузчик из IBSO (C#) | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Ребят, есть такая задача, выгружать определенное представление периодически в свою базу. Решил сделать загрузчик на C# для этой задачи, создаю коннект:
 
 	  | Код: | 	 		  string oradb = "Data Source=ORCL;User Id=hr;Password=hr;";
 
OracleConnection conn = new OracleConnection(oradb);  // C#
 
conn.Open(); 
 
OracleCommand cmd = new OracleCommand();
 
cmd.Connection = conn;
 
cmd.CommandText = "select * from IBS.VW_DEBT_CRED";
 
cmd.CommandType = CommandType.Text; 
 
OracleDataReader dr = cmd.ExecuteReader(); | 	  
 
Но в итоге в ридер попадает таблица без записей, я так понимаю нужно добавить executor.lock_open ? Но как? просто в текст этого же запроса? в oracle не силен.
 
Может есть варианты решить эту задачу с помощью pl\sql developer?
 
 
Доступ к базе очень ограниченный, т.е. могу просматривать только представления. Доступа к таблицам нет.
 
Попутный вопрос, как можно связывать два представления, для более быстрой выгрузки? Если делаю просто путем вложенного запроса то может жутко долго грузиться! | 
			 
		  | 
	 
	
		  | 
	 
	
		KhrushchevAV Участник со стажем
 
  Вступление в Клуб: 17.10.2014
  | 
		
			
				 Чт Дек 10, 2015 08:03    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Обычно "select * from SOME_VIEW" работает без executor.lock_open. (Если в представлении не использованы мудреные вызовы). 
 
Я бы сначала посмотрел, что вернет этот же селект, под этим же пользователем из sqlplus или sqldeveloper. И по результатам уже думал куда копать. Может в C# в направлении рекордсет, а может не положено Вам видеть... | 
			 
		  | 
	 
	
		  | 
	 
	
		Viton-Zizu Участник
 
  Вступление в Клуб: 10.12.2015
  | 
		
			
				 Чт Дек 10, 2015 09:17    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				| ну вот элементарную таблицу all_views, sql developer видит, а в C# получаю пустой вариант. | 
			 
		  | 
	 
	
		  | 
	 
	
		KhrushchevAV Участник со стажем
 
  Вступление в Клуб: 17.10.2014
  | 
		
			
				 Чт Дек 10, 2015 09:33    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				И это означает... Что  тут не причем. sqldeveloper его не запускает. Тут Вам надо копать в C#. Как там работать правильно с OracleDataReader...
 
 
Что у Вас дальше по коду, мне не видно. Что-то типа:
 
 	  | Код: | 	 		  try
 
        {
 
            while (dr.Read())
 
            {
 
                Console.WriteLine(dr.GetValue(0));
 
            }
 
        }
 
        finally
 
        {
 
            dr.Close();
 
        } | 	  
 
? | 
			 
		  | 
	 
	
		  | 
	 
	
		Viton-Zizu Участник
 
  Вступление в Клуб: 10.12.2015
  | 
		
			
				 Чт Дек 10, 2015 10:08    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				и вправду, я просто не довел дело до логического конца))
 
Спасибо!!!
 
 
А по работе вьюх сразу не подскажите? как правильней в оракле делать связку двух представлений? | 
			 
		  | 
	 
	
		  | 
	 
	
		KhrushchevAV Участник со стажем
 
  Вступление в Клуб: 17.10.2014
  | 
		
			
				 Чт Дек 10, 2015 12:21    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Цитата: | 	 		  | А по работе вьюх сразу не подскажите? как правильней в оракле делать связку двух представлений? | 	  
 
 
Мне вопрос не понятен. 
 
- Как "делать связку двух представлений"? 
 
- Так же как и двух таблиц.
 
 
 	  | Код: | 	 		  | SELECT * FORM V1, V2 WHERE V1.PK=V2.FK; | 	  
 
 
В чем, конкретно, проблема?
 
 
Если написать, например (опять я гадаю), только:
 
 	  | Код: | 	 		  | SELECT * FORM V1, V2 | 	  
 
То получим, что на каждую строку v1 будут выбраны ВСЕ строки v2, на вторую строку опять ВСЕ... и т.д.  (Гуглить "картезианское произведение") Не надо так делать.
 
Поля по которым связывать таблицы (или представления), надо выбирать правильно. В идеале, это должны быть "первичный ключ" и "внешний ключ". И тут Вам не обойтись без некоторого понимания структуры данных... | 
			 
		  | 
	 
	
		  | 
	 
	
		Viton-Zizu Участник
 
  Вступление в Клуб: 10.12.2015
  | 
		
			
				 Пт Дек 11, 2015 09:11    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Спасибо большое за ответы!
 
Просто делаю запрос также как вы расписали, они у меня довольно долго выполняются, думал может примудрость какая есть) | 
			 
		  | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
  | 
   
 
		 |