powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Бьюсь который день!
10 сообщений из 10, страница 1 из 1
Бьюсь который день!
    #32188892
miha72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, как с помощью процедуры создать таблицу (временную таблицу) в Оракле 8i или 9i? Дабы после ее вызвать и заполнить данными из др таблиц.
...
Рейтинг: 0 / 0
Бьюсь который день!
    #32188908
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
execute immediate 'create table ...';

Но это неправильный подход - создавать объекты на лету из хранимого кода, очень сильно неправильный. За такое принято кишки тупым кухонным ножом выпускать, однако
...
Рейтинг: 0 / 0
Бьюсь который день!
    #32188928
miha72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кишки новичку лучше оставить. Если поможешь, буду рад. Пробовал вернуть строки с помощью курсора (предварительно пролистав весь форум) - значения не возвращает. Ессесено я виноват, а вот где, никак не допру.
...
Рейтинг: 0 / 0
Бьюсь который день!
    #32188936
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажи свой код - курсор, и как ты с ним работаешь. Непонятно, кто не возвращает значения.
Если тебе нужна временная таблица, её следует создать заранее - строки в ней видны только в пределах текущей сессии или транзакции (смотря как создашь таблицу). Подробнее про этот механизм - ищи по форуму на предмет global temporary table (GTT).
...
Рейтинг: 0 / 0
Бьюсь который день!
    #32188956
miha72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за подсказку о temp table. А код следующий (слизанный тутже)

в SQL/PLS
declare type t_refcursor is ref cursor;
cr t_refcursor;
v_sql varchar2(200) := 'select * from miha.kodul';
begin
open cr for v_sql;
end;
/

или

Create or replace Package Pack
is
type MyCur is REF CURSOR;
Procedure prc(Mc in out MyCur);
end Pack;

/



Create or replace Package body Pack
is
Procedure prc(Mc in out MyCur)
is
begin
open Mc for select ul From kodul;
end prc;
end Pack;
/

А надо-то всего организовать обыкновенный отбор по вх.переменным из нескольких таблиц. В данном случае отобрать все наименования кодов из таблицы kodul. Сразу приношу извинения за вопрос делитанта
...
Рейтинг: 0 / 0
Бьюсь который день!
    #32188972
Simon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще все не правильно
для того чтобы курсор вернул данные его надо профетчить

а OPEN только открывает курсор, но данные не фетчит, между прочим
перед тем как делать OPEN желательно делать CLOSE, так как он может быть уже открыт
...
Рейтинг: 0 / 0
Бьюсь который день!
    #32188989
miha72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
с помощью чего это можно сделать? Цикл?
...
Рейтинг: 0 / 0
Бьюсь который день!
    #32188991
Bardis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to SIMON

a che ty togda s:

SQL-02114: Invalid SQL Cursor usage: trying to CLOSE a CLOSEd cursor
Code:, -2114, User Val:0

delat budesh?
...
Рейтинг: 0 / 0
Бьюсь который день!
    #32189005
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Bardis

Можно (нужно) проверять на isopen перед закрытием.
...
Рейтинг: 0 / 0
Бьюсь который день!
    #32189092
Roman_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Подскажите, как с помощью процедуры создать таблицу (временную таблицу) в Оракле 8i или 9i?

Считается правильным не создавать, а использовать ранее созданные GLOBAL TEMPORARY TABLES. Хотя, конечно, кому как нравится...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Бьюсь который день!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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