powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Минимальный элемент массива
15 сообщений из 15, страница 1 из 1
Минимальный элемент массива
    #36524432
Bucher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Описан тип и переменная

type number_type IS TABLE OF number INDEX BY BINARY_INTEGER;
num number_type;

Далее в этк переменную идет вставка
num(1):=1;
num(2):=10;
num(3):=5;

Каким оператором (командой) получить мин/мах значение num?
Что-то типа
max(num) = 10
min(num) = 1
...
Рейтинг: 0 / 0
Минимальный элемент массива
    #36524448
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bucher,

Скорее всего только в цикле.
...
Рейтинг: 0 / 0
Минимальный элемент массива
    #36524464
Фотография JaRo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используйте ассоциативный массив по этому полю (если это Вам подходит), и тогда просто FIRST/LAST
...
Рейтинг: 0 / 0
Минимальный элемент массива
    #36524473
comphead
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bucher,

если number_type глобальный, то

Код: plaintext
1.
2.
select max(column_value),
         min(column_value)
from table(cast(num) as number_type)
...
Рейтинг: 0 / 0
Минимальный элемент массива
    #36524484
Фотография JaRo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
compheadесли number_type глобальныйпо-моему описание типа не дает на это шансов..
И потом, ради этого тащить из PL в SQL и обратно ...
...
Рейтинг: 0 / 0
Минимальный элемент массива
    #36524498
comphead
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaRo,

возможно и так.

тогда либо классическая задачка на нахождение макс и мин в массиве,
либо в динамике загнать через forall в создаваемую таблицу, а там обычными макс и мин. потом табле убить
...
Рейтинг: 0 / 0
Минимальный элемент массива
    #36524504
Фотография JaRo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
compheadлибо в динамике загнать через forall в создаваемую таблицу, а там обычными макс и мин. потом табле убитьВы о чем?... Какая создаваемая таблица?
...
Рейтинг: 0 / 0
Минимальный элемент массива
    #36524515
comphead
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaRo,

это уже бред последнего часа работы.
1. в динамике создается таблица с одной колонкой
2. загоняется туда весь массив
3. находится max и min
4. убивается табле.

зы. все в динамике
...
Рейтинг: 0 / 0
Минимальный элемент массива
    #36524722
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
compheadJaRo,

это уже бред последнего часа работы.
1. в динамике создается таблица с одной колонкой
2. загоняется туда весь массив
3. находится max и min
4. убивается табле.

зы. все в динамике
а не проще тупо циклом пробежатся (если нет функционала и в новейших версиях)?

.....
stax
...
Рейтинг: 0 / 0
Минимальный элемент массива
    #36524731
Фотография JaRo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..compheadJaRo,

это уже бред последнего часа работы.
1. в динамике создается таблица с одной колонкой
2. загоняется туда весь массив
3. находится max и min
4. убивается табле.

зы. все в динамике
а не проще тупо циклом пробежатся (если нет функционала и в новейших версиях)?

.....
staxпо-моему всё проще, чем это...
...
Рейтинг: 0 / 0
Минимальный элемент массива
    #36524817
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaRostax..compheadJaRo,

это уже бред последнего часа работы.
1. в динамике создается таблица с одной колонкой
2. загоняется туда весь массив
3. находится max и min
4. убивается табле.

зы. все в динамике
а не проще тупо циклом пробежатся (если нет функционала и в новейших версиях)?

.....
staxпо-моему всё проще, чем это...
куда уж проще
(я если индекс минимального надо)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
declare
 type number_type IS TABLE OF number INDEX BY BINARY_INTEGER;
 num number_type;
 min_num number;
begin
--Далее в этк переменную идет вставка
 num( 1 ):= 1 ;
 num( 2 ):=- 10 ;
 num( 3 ):= 5 ;
 min_num:=num(num.first);
 for i in num.first+ 1 ..num.last loop
  if min_num>num(i) then
   min_num:=num(i);
  end if;
 end loop;
 dbms_output.put_line(min_num);
end;
/


......
stax
...
Рейтинг: 0 / 0
Минимальный элемент массива
    #36525461
comphead
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..,

я ж писал

автортогда либо классическая задачка на нахождение макс и мин в массиве ,
либо в динамике загнать через forall в создаваемую таблицу, а там обычными макс и мин. потом табле убить
)))
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Минимальный элемент массива
    #39330612
igorlab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а если в массиве еще и null присутствует...
единственное что пришло в голову

declare
min1 number;
min1ind number;
type priceArray IS VARRAY(100) OF integer;
priceXgArr priceArray;

begin
priceXgArr := priceArray(null, null, 11, 34, 12, 55, 14, 11);

FOR i IN 1..priceXgArr.COUNT LOOP --находим не null значение прибавляем к нему 1 чтобы оно было больше и приравниваем его к минимальному
if priceXgArr(i) is not null then
min1 := priceXgArr(i)+1;
end if;
END LOOP;

FOR i IN 1..priceXgArr.COUNT LOOP
if priceXgArr(i) < min1 then
min1 := priceXgArr(i);
min1ind := i;
end if;
END LOOP;

dbms_output.put_line( 'min = ' || min1 || ', ind = ' || min1ind);

end;
...
Рейтинг: 0 / 0
Минимальный элемент массива
    #39330617
igorlab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а если в массиве еще и null присутствует...
единственное что пришло в голову

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
declare 
  min1  number;
  min1ind  number;
  type priceArray IS VARRAY(100) OF integer;
  priceXgArr priceArray;  

begin
  priceXgArr := priceArray(null, null, 11, 34, 12, 55, 14, 11);
  
  FOR i IN 1..priceXgArr.COUNT LOOP   --находим не null значение прибавляем к нему 1 чтобы оно было больше и приравниваем его к минимальному
    if priceXgArr(i) is not null then 
      min1 := priceXgArr(i)+1;
    end if;
  END LOOP;
  
  FOR i IN 1..priceXgArr.COUNT LOOP   
    if priceXgArr(i) < min1  then 
      min1 := priceXgArr(i);
      min1ind := i;
    end if;
  END LOOP;
 
 dbms_output.put_line( 'min = ' || min1  || ', ind = ' ||  min1ind); 

end;
...
Рейтинг: 0 / 0
Минимальный элемент массива
    #39330647
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
igorlabединственное что пришло в головуБыдлокод.igorlab
Код: plsql
1.
if priceXgArr(i) < min1  then 

Код: plsql
1.
if priceXgArr(i) < min1 or min1 is null then 
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Минимальный элемент массива
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]