create table z#acc
(
id number
, c_main_number varchar2(20)
, c_client_name_id number
, c_date_open date
, c_date_close date
, c_user_open_id number
, c_user_close_id number
, c_branch_id number
, c_depart_id number
, c_saldo number
, c_saldo_rur number
, c_currency_id number
);
create or replace package body pack_acc is
-- запись
type rec is record
(
main_number ::[acc].[main_number]%type
, client_name_id ::[acc].[client_name_id]%type
, date_open ::[acc].[date_open]%type
, date_close ::[acc].[date_close]%type
, user_open_id ::[acc].[user_open_id]%type
, user_close_id ::[acc].[user_close_id]%type
, branch_id ::[acc].[branch_id]%type
, depart_id ::[acc].[depart_id]%type
, saldo ::[acc].[saldo]%type
, saldo_rur ::[acc].[saldo_rur]%type
, currency_id ::[acc].[currency_id]%type
);
-- таблица
type tab is table of rec;
-- Процедура выборки строки
procedure get_row(vnumb varchar2, r in out rec, indx out number)
is
begin
select n
(
n.[main_number]
, n.[client_name_id]
, n.[date_open]
, n.[date_close]
, n.[user_open_id]
, n.[user_close_id]
, n.[branch_id]
, n.[depart_id]
, n.[saldo]
, n.[saldo_rur]
, n.[currency_id]
) in ::[acc]
where n.[main_number] = vnumb
into rec;
--А вот теперь: ...
procedure Hard
is
tr rec;
n number;
begin
for
(
select c
(
c.[main_number]: numb
) in :[acc]
where c.[date_open] = pdt
)
loop
get_row(c.[numb], tr, n);
tr.[branch_id]:=pBranch;
tr.[date_close]:=pDate;
set_row(tr);
end loop;
end;
Но зачем городить такой масштабный код для иллюстрации дурацкого способа усложнить жизнь? Или изюминка в другом?
oradba81 Гость
Пт Дек 10, 2010 11:05
Полезность: Нет оценки
Admin пишет:
Здесь вообще не понял, на что намёк.
Очень дурацкий способ решить простую задачу.
Но зачем городить такой масштабный код для иллюстрации дурацкого способа усложнить жизнь? Или изюминка в другом?
А теперь представь что объявление ассоциативного массива вынесено в отдельную операцию или библиотеку.
Процедуры set_row и get_row вынесены тоже в отдельный пакет.
А затем во всех остальных операциях начинают их активно использовать.
Ничего не напоминает?
Но зачем городить такой масштабный код для иллюстрации дурацкого способа усложнить жизнь? Или изюминка в другом?
А теперь представь что объявление ассоциативного массива вынесено в отдельную операцию или библиотеку.
Процедуры set_row и get_row вынесены тоже в отдельный пакет.
А затем во всех остальных операциях начинают их активно использовать.
Ничего не напоминает?
вот ты мне объясни популярно, нафига мне прописывать полный путь к локальной процедуре или функции, если она у меня работает в рамках одной библиотеки, пакета, операции?
А если оно будет вынесено в отдельный пакет, так они там и будут объявлены как глобальные, чтобы к ним можно было обратиться _________________ всегда есть как минимум 2 выхода
oradba81 Гость
Пт Дек 10, 2010 15:02
Полезность: Нет оценки
Alexsey пишет:
вот ты мне объясни популярно, нафига мне прописывать полный путь к локальной процедуре или функции, если ОНА у МЕНЯработает в рамках одной библиотеки, пакета, операции?
Ну это же у тебя в ТВОЕМ коде см [quote выше] такое происходит
За него отвечать не могу
Да и кто говорил про полный путь? Это откуда взял?
Alexsey пишет:
А если оно будет вынесено в отдельный пакет, так они там и будут объявлены как глобальные, чтобы к ним можно было обратиться
Две темы были связаны и зная ответ можно было решить обе легко
Прошла неделя активности нет, итак привожу ответ:
Кусок кода:
Цитата:
-- запись
type rec is record
(
main_number ::[acc].[main_number]%type
, client_name_id ::[acc].[client_name_id]%type
, date_open ::[acc].[date_open]%type
, date_close ::[acc].[date_close]%type
, user_open_id ::[acc].[user_open_id]%type
, user_close_id ::[acc].[user_close_id]%type
, branch_id ::[acc].[branch_id]%type
, depart_id ::[acc].[depart_id]%type
, saldo ::[acc].[saldo]%type
, saldo_rur ::[acc].[saldo_rur]%type
, currency_id ::[acc].[currency_id]%type
);
-- таблица
type tab is table of rec;
Преобразуется в:
Цитата:
type tab is table of z#acc%rowtype
Однако это не самый лучший путь, потому что кк далее видно запись используется в процедурах.
Более красивый вариант это кешировать только ID
Цитата:
type tab is table of number
Ну вот теперь чувствуется начнется всякий флуд типа это давно извесно и т.п. , смех всякий и прочее. А главное что за неделю ответа правильного не было. Зато было много хамства, насчет моего обращения на "Ты". Вот иммено поэтому я закрыл тему про обучение и не давал сразу ответов на вопросы - чтобы думали и писали свои ответы. Окрестили троллем. Ну да ладно. Так что давайте ждемс.... издевки в студию
P/S>
Мы живем на отцовской земле
Внуки сварога, славные дети
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
Домен cftclub.ru не связан с ЗАО "Центр Финансовых Технологий" и ни в коей мере не нарушает авторских и иных прав
Владелец может не разделять мнения Участников и не несет ответственности за их публикации
Powered by phpBB