Иногда возникает задача: сложить всё вместе, а показывать индивидуально. Представим себе: у нас есть таблица, в которую мы складываем данные. Все данные. А показывать их должны селективно. Например, каждому пользователю только его данные. Было бы здорово, если бы мы могли добавить в таблицу новое поле, скажем, user_name, и создать представление вида create view...
as
select...
from...
where user_name = :current_user_name
; Но так не бывает. По определению синтаксиса представления.
Нет, конечно, Oracle предлагает нам конвейерные функции, но это потом - а вот представлением бы, вьюхой-то? Как? Нельзя? Совсем нельзя?
А если очень хочется?!! Можно! В Oracle можно. За то и любим его. Но не совсем так, как навскидку кажется. Пишем текст представления, как хотели, только вместо значения параметра (placeholder'а, бинда, переменной с двоеточием) ставим взятие значения пакетной функции: create view... as select... from...
where user_name = my_pkg.get_current_user_name
; Это означает, что если