CftClub.ru
Клуб специалистов ЦФТ-Банк

Не могу получить результат из PL/PLUS представления

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
garsia
Участник со стажем


Вступление в Клуб: 01.11.2012
СообщениеЧт Ноя 01, 2012 09:11   Не могу получить результат из PL/PLUS представления Ответить с цитатой
Полезность: Нет оценки
Добрый день!
Помогите решить проблему...
Есть представление PL/PLUS - создано через dblink, ключевого поля нет.
Внутри другого существующего справочника создано представление, указывающее на него.
Есть операция с параметром - ссылка на это представление
По кнопке оно вызывается, появляется нужный список, но при выборе записи поля ссылки остаются пустыми. Куда девается результат? Как его вытащить?
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеЧт Ноя 01, 2012 13:37   Re: Не могу получить результат из PL/PLUS представления Ответить с цитатой
Полезность: Нет оценки
garsia пишет:

Есть представление PL/PLUS - создано через dblink, ключевого поля нет.
Внутри другого существующего справочника создано представление, указывающее на него.

параметр в себя соберет данные из экземпляра "другого существующего справочника". Если, конечно, это представление содержит в себе данные справочника (в частности, ID), а не левую информацию по дблинку.
garsia
Участник со стажем


Вступление в Клуб: 01.11.2012
СообщениеЧт Ноя 01, 2012 15:35   Re: Не могу получить результат из PL/PLUS представления Ответить с цитатой
Полезность: Нет оценки
devor пишет:

параметр в себя соберет данные из экземпляра "другого существующего справочника". Если, конечно, это представление содержит в себе данные справочника (в частности, ID), а не левую информацию по дблинку.


Похоже, так оно и происходит!
Я пробовал устанавливать для этого представления свойство "справочник", при этом создается таблица - которая вовсе не нужна, ну и опять же ничего не возвращается, хотя показывает нужные данные.
Как же получить именно эту "левую" информацию?

P.S. Мне не обязательно создавать это представление внутри другого
Как вообще получить данные не из физической таблицы-справочника, а из PL/PLUS представления?
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеПт Ноя 02, 2012 05:45   Re: Не могу получить результат из PL/PLUS представления Ответить с цитатой
Полезность: Нет оценки
garsia пишет:

Я пробовал устанавливать для этого представления свойство "справочник", при этом создается таблица - которая вовсе не нужна

Не надо путать структуру/ТБП и представление

garsia пишет:

, ну и опять же ничего не возвращается, хотя показывает нужные данные.

Показывает представление.
Параметр имеет тип не "представление", а ссылка на ТБП.
Если представление показывает данные не "своего" типа, а что-то постороннее по дблинку, то с какой стати что-то должно "возвращаться" в переменную?

garsia пишет:

Как же получить именно эту "левую" информацию?

P.S. Мне не обязательно создавать это представление внутри другого
Как вообще получить данные не из физической таблицы-справочника, а из PL/PLUS представления?

Налицо структурные проблемы с пониманием. Думаю, программированию тут не научат.
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеПт Ноя 02, 2012 08:09   Re: Не могу получить результат из PL/PLUS представления Ответить с цитатой
Полезность: Нет оценки
garsia пишет:
Добрый день!
Помогите решить проблему...
Есть представление PL/PLUS - создано через dblink, ключевого поля нет.
Внутри другого существующего справочника создано представление, указывающее на него.
Есть операция с параметром - ссылка на это представление
По кнопке оно вызывается, появляется нужный список, но при выборе записи поля ссылки остаются пустыми. Куда девается результат? Как его вытащить?


Знаете, я ничего не понял...
Когда каша на языке, то каша и в голове.

Попробуйте внятно объяснить, можно с картинками, какие вводные данные в задаче, что именно вы пытаетесь сделать.

Я, честно говоря, споткнулся уже на второй фразе...
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеПт Ноя 02, 2012 08:18   Re: Не могу получить результат из PL/PLUS представления Ответить с цитатой
Полезность: Нет оценки
Random пишет:

Знаете, я ничего не понял...
Когда каша на языке, то каша и в голове.

Попробуйте внятно объяснить, можно с картинками, какие вводные данные в задаче, что именно вы пытаетесь сделать.

Я, честно говоря, споткнулся уже на второй фразе...

У меня есть навыки чтения подобных шифровок Smile
Вот как я понял:

есть справочник, он пустой, но при этом имеет представление, тянущее данные по дблинку.
Есть операция, в у которой есть параметр типа ссылка на справочник.
При выборе значения для параметра на экранной форме данные берутся из представления с чужими для справоника данными
Автор ожидает, что при таком выборе, параметр считает данные из представления, которые никакого отношения к самому справочнику не имеют.
garsia
Участник со стажем


Вступление в Клуб: 01.11.2012
СообщениеПт Ноя 02, 2012 08:35   Re: Не могу получить результат из PL/PLUS представления Ответить с цитатой
Полезность: Нет оценки
Как говорили в старину, дурак спросил - и озадачил мудреца... )
Господа, я прекрасно понимаю, что ничего не понимаю.
Понимание приходит с опытом, опытом решения практических задач, а откуда ему взяться сразу?

Я поясню свою проблему.
Есть PL/PLUS-представление, через dblink.
Есть задача - взять из него данные - одна запись, пусть один единственный реквизит, и ими заполнить поля (одна запись) в другом справочнике.
Может это тривиально, но я этого не знаю, и методом тыка что-то не получается...
hornet
Участник со стажем


Вступление в Клуб: 24.07.2008
СообщениеПт Ноя 02, 2012 09:39   Re: Не могу получить результат из PL/PLUS представления Ответить с цитатой
Полезность: Нет оценки
garsia пишет:

Я поясню свою проблему.
Есть PL/PLUS-представление, через dblink.
Есть задача - взять из него данные - одна запись, пусть один единственный реквизит, и ими заполнить поля (одна запись) в другом справочнике.
Может это тривиально, но я этого не знаю, и методом тыка что-то не получается...


Видно как то так:

Код:
oObj [другой српвочник];
--Создаем нужный тип
type res is record (
   реквизит1 varchar2(32),
...
);

type t_type is table of res;
dl t_type;
begin
--Берем данные из дблинка
-- begin pl/sql            
select l.*
bulk collect into dl
from MY_VW_@dblink l;
-- end pl/sql

-- Закидываем куда нибудь
for i in 1..dl.count loop
 oObj%init;
 oObj.[реквизит]:= dl(i).[реквизит1];
 ::[другой справочник]%insert(oObj);   
end loop;
end;
garsia
Участник со стажем


Вступление в Клуб: 01.11.2012
СообщениеПт Ноя 02, 2012 10:58   Re: Не могу получить результат из PL/PLUS представления Ответить с цитатой
Полезность: Нет оценки
Спасибо за ответ!
Но это не то...
Мне не нужны все записи, только одна.
Я еще раз попробую обяснить что мне нужно на конкретном примере.

Мой справочник по смыслу - таблица с операциями, есть поле, например, дебет - номер счета.
Представление из дблинка содержит множество счетов.
Нужен только один номер, найти его, пользуясь штатными средствами представления - просмотр, фильтры по разным полям. - получить это значение и записать его в поле справочника - операции.

Два дня бьюсь, перепробовал кучу вариантов, что-то в консерватории не так... ))
hornet
Участник со стажем


Вступление в Клуб: 24.07.2008
СообщениеПт Ноя 02, 2012 11:20   Re: Не могу получить результат из PL/PLUS представления Ответить с цитатой
Полезность: Нет оценки
garsia пишет:

Мне не нужны все записи, только одна.
...


а where для чего ?
garsia
Участник со стажем


Вступление в Клуб: 01.11.2012
СообщениеПт Ноя 02, 2012 12:00   Re: Не могу получить результат из PL/PLUS представления Ответить с цитатой
Полезность: Нет оценки
hornet пишет:

а where для чего ?


а красивое окошко с данными из представления, а перед этим не менее красивое окошко с "фильтром" - штатные, для чего?

Их бы использовать!

P.S. Проблема в том, что для справочника-таблицы это все прекрасно работает, а для справочника-PL/PLUS-представления - нет!

Причина в отсутствии ключа-системного поля ID?
Я еще пробовал добавить в запрос поле ID:

type main is
select x (
x.[ID],
x.[CODE],
x.[LABEL],
x.[DOC]
)
in VW_SQL_ACC%rowtype;

ID - это to_number от номера счета -это не помогло
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеВс Ноя 04, 2012 11:58    Ответить с цитатой
Полезность: Нет оценки
Вы определитесь, в операции не отражается или во вьюхе.
Что-то мне подсказывает, что вьюха отражает любые данные, которые описаны в запросе. А вот вытянуть на форму и заполнить параметр/переменную проблема. Нужна ссылка на объект внутри системы. Можно, конечно, сделать, что при запуске операции будет заполняться некая временная структура и выборка пойдет именно из нее. Но мне кажется это негативно скажется на скорости работы.
как правило при интеграции делают 2 справочника:
1. Справочник с данными
2. Справочники соответствий внутри системы, которы и отвечает за то, какой объект системы А соответствует объекту системы Б.
Все выборки реализуются из внутрисистемного справочника. За свою короткую работу с разными системами ни разу не видел, чтобы в реализациях выбор параметров делали через вьюхи или синонимы из другой системы.
_________________
всегда есть как минимум 2 выхода
garsia
Участник со стажем


Вступление в Клуб: 01.11.2012
СообщениеВт Ноя 06, 2012 10:24    Ответить с цитатой
Полезность: Нет оценки
Я почитал форум, за выходные...
Понял, что в том виде, как я себе представлял, задача принципиально нерешаема.

Нашел только вот это:

http://www.cftclub.ru/viewtopic.php?t=1853

Тоже не совсем подходит - но приму к сведению как вариант.

Пока решил сделать так - создать обычный справочник-таблицу и загружать в него данные из dblink'а

Спасибо всем за ответы!
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru