powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / View и параметры
25 сообщений из 50, страница 1 из 2
View и параметры
    #40041457
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрий день всем!
Прошу помощи.
Есть сложный View, который должен вызываться с параметрами.
Сейчас это реализовано через временную таблицу. Перед вызовом View заносятся значения в таблицу и после вызывается View.
Все работает отлично, но проблема в том, что вьюшку нужно вызывать одним запросом.
Попробовал через функцию
Код: plsql
1.
SELECT * FROM ViewName WHERE Function(:param) = 1


Но проблема в том, что сначала выполняется View, а уже потом заноситься значения во временную таблицу.
Как можно решить эту проблему?
Или как в одном запросе сначала заносить данные во временную таблицу, а потом вызывать View?
Использовать табличные функции, пока, не очень хочеться.
Укажите направление куда копать.
...
Рейтинг: 0 / 0
View и параметры
    #40041461
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiW,

pipe ?
...
Рейтинг: 0 / 0
View и параметры
    #40041475
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
123йй,
Если другого пути не будет, то придется делать табличную функцию. :(
...
Рейтинг: 0 / 0
View и параметры
    #40041490
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiW
123йй,
Если другого пути не будет, то придется делать табличную функцию. :(

в табличную как данные передатите?

ps
можно глянуть в сторону контекста, но ето не решает задачу

....
stax
...
Рейтинг: 0 / 0
View и параметры
    #40041497
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiW,

С 19.6
Код: plsql
1.
return varchar2 SQL_MACRO



Regards

Maxim
...
Рейтинг: 0 / 0
View и параметры
    #40041517
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

А какие проблемы передать параметр в функцию?
Код: plsql
1.
Select * FROM Table(Function(:Param))
...
Рейтинг: 0 / 0
View и параметры
    #40041521
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Demenko, Можно, пожалуйста, детальнее. Не понял идею.
...
Рейтинг: 0 / 0
View и параметры
    #40041530
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
View и параметры
    #40041567
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiW
Stax,

А какие проблемы передать параметр в функцию?
Код: plsql
1.
Select * FROM Table(Function(:Param))



где тут вью?

.....
stax
...
Рейтинг: 0 / 0
View и параметры
    #40041570
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Demenko
SergiiW,

С 19.6
Код: plsql
1.
return varchar2 SQL_MACRO



Regards

Maxim


можете привести манюсенький пример create view с return varchar2 SQL_MACRO
для пользования как параметр

и как тогда вьюшку вызывать


.....
stax
...
Рейтинг: 0 / 0
View и параметры
    #40041573
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiWКак можно решить эту проблему?

Например, можно вернуться к истокам и прочитать что такое view и как его используют. Вы
явно пытаетесь делать это совершенно извращённым способом. Обычно параметры передают
запросу, который использует view:
Код: sql
1.
select * from view where field=:param


А уж СУБД сама пропихнёт их внутрь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
View и параметры
    #40041579
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

там же по ссылке примеры , ну вот еще на моей 19.7

Код: plsql
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.
SQL> CREATE OR REPLACE FUNCTION emp_view (p_job varchar2)
  2  RETURN VARCHAR2 SQL_MACRO IS
  3  v_query varchar2(500);
  4  BEGIN
  5    v_query := q'!SELECT *
  6                  FROM emp
  7                  WHERE  job = upper(p_job) !';
  8    RETURN v_query;
  9  END;
 10  /

Function created.

SQL>
SQL> select ename, job from emp_view('manager');

ENAME      JOB
---------- ---------
JONES      MANAGER
BLAKE      MANAGER
CLARK      MANAGER

SQL>
SQL> select ename, job from emp_view('clerk');

ENAME      JOB
---------- ---------
SMITH      CLERK
ADAMS      CLERK
JAMES      CLERK
MILLER     CLERK

SQL>



Regards

Maxim
...
Рейтинг: 0 / 0
View и параметры
    #40041661
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Demenko,

так понятно, но ето ж не совсем вью

.....
stax
...
Рейтинг: 0 / 0
View и параметры
    #40041700
Maxim Demenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

Так pipelined function тоже не совсем вью ... Но кмк ТС такое надо - если конечно версия позволяет

Regards

Maxim
...
Рейтинг: 0 / 0
View и параметры
    #40041710
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Maxim Demenko#22274894]
так я и для pipelined не понимал как они собираюся параметризировать вью

имхо
пока-что передать параметр во вью нельзя

напр
select * from view_p using xxx,yyy where ...

.....
stax
...
Рейтинг: 0 / 0
View и параметры
    #40041720
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,
Вью используется в функции. Функция возвращает результат работы вью.
...
Рейтинг: 0 / 0
View и параметры
    #40041723
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Уважаемый, если бы все решалось "where field=:param" я бы даже не писал в форум. field не выводиться в поля вью. Да, можно вывести, но в этом случае выполнение вью заняло бы сутки, если не месяцы. Параметры используются в рекурсивных запросах и даже вывести их в поля вью будет сложно, а фильтровать по ним - это повеситься.
...
Рейтинг: 0 / 0
View и параметры
    #40041727
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Demenko, спасибо! До сих пор не знал про такую возможность. Но, к сожалению, к моему случаю это не применимо. Можно изменить скрипт, который основан на вью, но невозможно изменить саму вью или передать ей параметры. :(
...
Рейтинг: 0 / 0
View и параметры
    #40041733
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно кто знает, как одним запросом внести данные в таблицу или установить переменные сессии, пакета и получить результат SELECT?
MySql это делается просто (Inset ...; Select ...), а в oracle - даже не представлю.
...
Рейтинг: 0 / 0
View и параметры
    #40041766
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiW,

Откуда возникает ограничение на один запрос?
...
Рейтинг: 0 / 0
View и параметры
    #40041768
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiW
Stax,
Вью используется в функции. Функция возвращает результат работы вью.


всеравно внутри функции параметр во вью не передать

......
stax
...
Рейтинг: 0 / 0
View и параметры
    #40041785
va_kochnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergiiW
Возможно кто знает, как одним запросом внести данные в таблицу или установить переменные сессии, пакета и получить результат SELECT?
MySql это делается просто (Inset ...; Select ...), а в oracle - даже не представлю.

Я создавал функцию вида
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
function set_param (p_param1 varchar2, p_param2 number, p_param3 date) return varchar2
is
begin
 переменная_сессии1:=p_param1;
 переменная_пакета2:=p_param2;
 переменная_пакета3:=p_param3;
return null;
end set_param;


И потом выполнял запрос
Код: plsql
1.
select * from view where set_param('параметр1',999,sysdate) is null;


Работало.
...
Рейтинг: 0 / 0
View и параметры
    #40041830
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
Откуда возникает ограничение на один запрос?

Такие условия, к сожалению, изменить сложно.
1. Есть готовая программа, которая оперирует только одним запросом.
2. Нужно получать эти данные в MS Excel через ODBC.
...
Рейтинг: 0 / 0
View и параметры
    #40041831
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax
все равно внутри функции параметр во вью не передать
stax

Внутри функции я сохраняю параметры во временную таблицу, а затем вызываю вью, которая уже использует эту временную таблицу.
...
Рейтинг: 0 / 0
View и параметры
    #40041832
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
va_kochnev
SergiiW
Возможно кто знает, как одним запросом внести данные в таблицу или установить переменные сессии, пакета и получить результат SELECT?
MySql это делается просто (Inset ...; Select ...), а в oracle - даже не представлю.

Я создавал функцию вида
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
function set_param (p_param1 varchar2, p_param2 number, p_param3 date) return varchar2
is
begin
 переменная_сессии1:=p_param1;
 переменная_пакета2:=p_param2;
 переменная_пакета3:=p_param3;
return null;
end set_param;


И потом выполнял запрос
Код: plsql
1.
select * from view where set_param('параметр1',999,sysdate) is null;


Работало.
Спасибо, попробую. Я пробовал так делать с таблицей - не катит. Сначала вызывается вью, а потом только проходят изменения в таблице. думал и для переменной сессии так будет.
...
Рейтинг: 0 / 0
25 сообщений из 50, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / View и параметры
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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