Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> последня строка, определить выбрана ли последняя строка 
V
    Опции темы
tvik
Дата 30.10.2006, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Подcкажите как определить внутри цикла выбрана ли последняя строка или нет???????????
Код
cursor all_declarant is
       .............


FOR sss in all_declarant(18921351)

  LOOP
    if sss.name is not null then

          КАК НАПИСАТЬ УСЛОВИЕ, ЧТО СТРОКА ПОСЛЕДНЯЯ!!!
            \\if sss.name - [color=orangered]последняя строка  [/color] then
              declarants := sss.name;
             
               else 
                  declarants := declarants||';'||sss.name;
                end if;

    end if;
    
    END LOOP;

PM MAIL   Вверх
LSD
Дата 30.10.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Код
declare

  cursor ALL_DECLARANT is
    select SYS_GUID(), count(*) OVER() R_COUNT from ALL_OBJECTS where ROWNUM <= 20;

  SSS     ALL_DECLARANT%rowtype;
  CUR_ROW number;

begin
  CUR_ROW := 0;
  for SSS in ALL_DECLARANT loop
  
    CUR_ROW := CUR_ROW + 1;
  
    if CUR_ROW = SSS.R_COUNT then
      DBMS_OUTPUT.PUT_LINE('Last line: ' || TO_CHAR(CUR_ROW));
    end if;
  
  end loop;
end;



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
tvik
Дата 31.10.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Спасибочки smile  smile 

Но можно еще вопросик ?!

как оформить или записать запрос типа
Код
select tbl.name where tbl.name like 'Уренгойское{%'

Такой запрос возвращает набор строк, а мне нужна только первая smile 

Может быть можно сразу ограничить возвращаемый набор до одной строки, чтобы не писать циклов и не заводить счетчиков

Так покороче хочется smile  smile  smile 
PM MAIL   Вверх
LSD
Дата 31.10.2006, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



В моем примере как раз была такая штука.
Код
select tbl.name where tbl.name like 'Уренгойское{%' and rownum < 2



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
tvik
Дата 31.10.2006, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



И еще по поводу первого ответа
Код
cursor ALL_DECLARANT is
    select SYS_GUID(), count(*) OVER() R_COUNT from ALL_OBJECTS where ROWNUM <= 20;

Что означает ф-я OVER() и зачем она
PM MAIL   Вверх
LSD
Дата 31.10.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Цитата
OVER — ключевое слово, идентифицирующее эту функцию как аналитическую. В противном случае синтаксический анализатор не мог бы отличить функцию агрегирования SUM() от аналитической функции SUM(). Конструкция после ключевого слова OVER описывает срез данных, "по которому" будет вычисляться аналитическая функция.

В данном случае эта функция означает что count(*) надо вычислить для всех строк запроса. Подробнее почитай у Том Кайт - Oracle
для профессионалов, глава 12 Аналитические функции.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
tvik
Дата 1.11.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Прикольно, спасибо!
Так сразу и не догадаться, что с агрегирующую функцию можно так использовать smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.1366 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.