powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Стандартный датасет из блока запроса.
5 сообщений из 5, страница 1 из 1
Стандартный датасет из блока запроса.
    #32137540
Paul Chabinsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня Oracle 8.0.5i.
Хочу сделать постраничный просмотр таблицы, вот запрос...
DECLARE
CURSOR c1 IS SELECT * FROM DICTIONARY;
myrec c1%ROWTYPE;
xStart NUMBER := 0;
xStop NUMBER := 5;
BEGIN
OPEN c1;
LOOP
EXIT WHEN c1%ROWCOUNT>xStop;
FETCH c1 INTO myrec;
IF c1%ROWCOUNT>xStart THEN DBMS_OUTPUT.PUT_LINE(myrec.eng); END IF;
END LOOP;
CLOSE c1;
END;

Все как бы хорошо но хотелось бы не просто одно поле eng получить из таблицы DICTIONARY а нормальный датасет, такой как например получаеться при SELECT * FROM dictionary... из блока запроса получить датасет в подобном виде?
...
Рейтинг: 0 / 0
Стандартный датасет из блока запроса.
    #32137549
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"У меня Oracle 8.0.5i. "

Это что за зверь?
...
Рейтинг: 0 / 0
Стандартный датасет из блока запроса.
    #32137557
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то мне не совсем понятно, откуда ты этот запрос вызываешь?
...
Рейтинг: 0 / 0
Стандартный датасет из блока запроса.
    #32137568
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если делать в том-же духе как и у тебя, то так:
IF c1%ROWCOUNT>xStart THEN
DBMS_OUTPUT.PUT_LINE(myrec.eng||myrec.field2||myrec.field3......||myrec.fieldN);
END IF;

А если по уму, то есть много вариантов, но одним словом не обьяснить.
Смотри здесь:
http://www.sql.ru/forum/actualtopics.aspx?search=pages_object&bid=3
...
Рейтинг: 0 / 0
Стандартный датасет из блока запроса.
    #32137795
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это пример как запросом получить данные из функции.
Работает в 8.0.X, 8i
Запусти этот скрипт
Код: 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.
29.
30.
31.
32.
drop type column_names
/

drop type tab_column_object
/

CREATE TYPE tab_column_object AS OBJECT
(
 column_name VARCHAR2( 30 )
 )
/

CREATE TYPE column_names AS TABLE OF tab_column_object
/

create or replace function use_plsql_tab(p_table IN all_tab_columns.table_name%TYPE) 
return column_names
is
v_tab_cols_name column_names:=column_names();
cursor c_tables(p_table all_tab_columns.table_name%TYPE) is
 select column_name from all_tab_columns where upper(table_name)=upper(p_table);
v_cnt NUMBER( 16 ) default  0 ;
begin
 for v_cur in c_tables(p_table) loop
    v_tab_cols_name.extend;
  v_tab_cols_name(v_tab_cols_name.count):=v_cur;
 end loop;
 return v_tab_cols_name;
end use_plsql_tab;
/

select * from table(cast(use_plsql_tab('all_tab_columns') as column_names));


Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
test@RU_MOW_EPSILON.WORLD> start use_plsql_tab

Type dropped.


Type dropped.


Type created.


Type created.


Function created.

NUM_BUCKETS
LAST_ANALYZED
SAMPLE_SIZE
CHARACTER_SET_NAME
CHAR_COL_DECL_LENGTH
GLOBAL_STATS
USER_STATS
AVG_COL_LEN
OWNER
TABLE_NAME
COLUMN_NAME
DATA_TYPE
DATA_TYPE_MOD
DATA_TYPE_OWNER
DATA_LENGTH
DATA_PRECISION
DATA_SCALE
NULLABLE
COLUMN_ID
DEFAULT_LENGTH
DATA_DEFAULT
NUM_DISTINCT
LOW_VALUE
HIGH_VALUE
DENSITY
NUM_NULLS

 26  rows selected.

test@RU_MOW_EPSILON.WORLD>
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Стандартный датасет из блока запроса.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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