Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Таблицы PL/SQL - как ???? / 7 сообщений из 7, страница 1 из 1
07.05.2003, 05:40
    #32154793
DAV
DAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблицы PL/SQL - как ????
Могу ли я поискать значение в существующей PL/SQL таблице иначе, чем перебором ее ??

Например есть таблица с цифровыми данными, а мне нужно знать есть ли в ней
запись со значением 12.
...
Рейтинг: 0 / 0
07.05.2003, 08:36
    #32154814
pols
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблицы PL/SQL - как ????
Таблицы PL/SQL - это те же массивы со всеми вытекающими последствиями...
...
Рейтинг: 0 / 0
07.05.2003, 11:10
    #32154960
Les
Les
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблицы PL/SQL - как ????
Кажется надо рыться по ключевым словами TABLE или CAST
...
Рейтинг: 0 / 0
07.05.2003, 12:23
    #32155070
Oleg Afanasiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблицы PL/SQL - как ????
Какая версия сервера??
В поздних версиях можно
...
Рейтинг: 0 / 0
08.05.2003, 04:07
    #32155626
DAV
DAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблицы PL/SQL - как ????
Версия 8.1.7
...
Рейтинг: 0 / 0
08.05.2003, 09:11
    #32155674
AndrewS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблицы PL/SQL - как ????
в 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
09.05.2003, 00:26
    #32156532
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблицы PL/SQL - как ????
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
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Таблицы PL/SQL - как ???? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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