powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Таблицы PL/SQL - как ????
7 сообщений из 7, страница 1 из 1
Таблицы PL/SQL - как ????
    #32154793
DAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу ли я поискать значение в существующей PL/SQL таблице иначе, чем перебором ее ??

Например есть таблица с цифровыми данными, а мне нужно знать есть ли в ней
запись со значением 12.
...
Рейтинг: 0 / 0
Таблицы PL/SQL - как ????
    #32154814
pols
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблицы PL/SQL - это те же массивы со всеми вытекающими последствиями...
...
Рейтинг: 0 / 0
Таблицы PL/SQL - как ????
    #32154960
Les
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется надо рыться по ключевым словами TABLE или CAST
...
Рейтинг: 0 / 0
Таблицы PL/SQL - как ????
    #32155070
Фотография Oleg Afanasiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая версия сервера??
В поздних версиях можно
...
Рейтинг: 0 / 0
Таблицы PL/SQL - как ????
    #32155626
DAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия 8.1.7
...
Рейтинг: 0 / 0
Таблицы PL/SQL - как ????
    #32155674
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в 9.2:
Код: plaintext
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.
26.
27.
28.
create type tobj as object
(	n	number
,	s	varchar2( 30 )
);

create type ttbl is table of tobj;

declare
	tbl	ttbl:= ttbl();
	nCnt	number;
	nAvg	number;
begin
  tbl.extend( 3 );
  tbl( 1 ):= tobj( 100 ,'first');
  tbl( 2 ):= tobj( 200 ,'second');
  tbl( 3 ):= tobj( 300 ,'third');
 select count(*)
  into nCnt
  from table( cast (tbl as ttbl))	;

  dbms_output.put_line('cnt: ' || nCnt);
 select avg(length(s))
  into nAvg
  from table( cast (tbl as ttbl))	;
  dbms_output.put_line('avg: ' || nAvg);
end;

cnt:  3 
avg:  5 . 33333333333333333333333333333333333333 
...
Рейтинг: 0 / 0
Таблицы PL/SQL - как ????
    #32156532
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
If PL/SQL table stores unique whole numbers between -2147483647 and 2147483647 you can use index as the value. For example table with 3 values 12, 120 and 1200 can be populated:

SQL> declare type tbltype is table of boolean index by binary_integer;
2 tbl tbltype;
3 begin
4 tbl(12) := TRUE;
5 tbl(120) := TRUE;
6 tbl(1200) := TRUE;
7 if tbl.exists(12)
8 then
9 dbms_output.put_line('Table contains element with value 12');
10 else
11 dbms_output.put_line('Table does not contain element with value 12');
12 end if;
13 if tbl.exists(17)
14 then
15 dbms_output.put_line('Table contains element with value 17');
16 else
17 dbms_output.put_line('Table does not contain element with value 17');
18 end if;
19 end;
20 /
Table contains element with value 12
Table does not contain element with value 17

PL/SQL procedure successfully completed.

In 9i you can use same logic for any datatype (not just numbers) by using associative arrays.

SY.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Таблицы PL/SQL - как ????
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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