Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
SQL, PL/SQL, T-SQL: запросы, DML DDL операторы, пакеты, процедуры, функции, триггеры и последовательности.
  • Страница:
  • 1

ТЕМА: Oracle: rowtype в неявном курсоре

Oracle: rowtype в неявном курсоре 22 июль 2011 03:49 #2713

  • Rita
  • Rita аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 48
  • Спасибо получено: 0
declare
aa tab1%rowtype;
begin
select * into aa from tab1 where....

При выборке из одной таблицы работает, а как сделать то же самое , если SELECT из нескольких таблиц ?
declare
aa ????%rowtype;
begin
select * into ???? from tab1, tab2, tab3 where....

Заранее благодарю за ответы.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: rowtype в неявном курсоре 22 июль 2011 03:49 #2714

Привет!
Задекларируй курсор явно, тогда ты сможешь объявить переменную типа my_cursor%rowtype.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: rowtype в неявном курсоре 22 июль 2011 03:50 #2715

  • Pond
  • Pond аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 47
  • Спасибо получено: 0
Маленький вопрос.
Зачем тебе все поля из всех таблиц.

И еще один как ты собираешься к ним обращаться в курсоре если в таблицах одинаковые поля? Следовательно тебе все равно прийдется описывать курсор явным образом. А это у тебя полюбому получиться.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: rowtype в неявном курсоре 22 июль 2011 03:50 #2716

  • Rita
  • Rita аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 48
  • Спасибо получено: 0
Дело в том что под таблицами понимаются SELECTы т.е.:
SELECT * From (SELECT1,select2...). В результате выбирается одна запись с данными для расчета. Хотелось бы узнать можно ли обойтись без явного курсора - ведь при работе с одной таблицей все работает и с неявным курсором?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: rowtype в неявном курсоре 22 июль 2011 03:51 #2717

  • Jack
  • Jack аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 45
  • Спасибо получено: 0
1. Нельзя ли обойтись без объявления переменной rowtype?
FOR tcur IN (SELECT * FROM (SELECT1, SELECT2)) LOOP

   ...

  END LOOP;
2. Ну или написать view = (SELECT * FROM (SELECT1, SELECT2)) и потом использовать его как tab1...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle: rowtype в неявном курсоре 22 июль 2011 03:51 #2718

  • Rita
  • Rita аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 48
  • Спасибо получено: 0
Самое приемлимое решение предложил John Smith. Оно подрузамевалось с самого начала , но была мысль о использовании неявного курсора.
Но логика наверное в этом есть - при явном задании источника можно использовать неявные курсоры, а при неявном источнике надо применять явный курсор. Только почему-то в своих книгах я нигде этого не нашла, да и вообще с хорошей документацией всегда проблемы.

Спасибо всем за участие в обсуждении вопроса.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Rita.
  • Страница:
  • 1