Обновление: Похоже, я пропустил "встроенную" часть. Тем не менее, я оставляю здесь ответ на тот случай, если кто-то захочет прочитать о разнице между VIEW и обычными функциями.
Если у вас есть только функция, которая выполняет ВЫБОР и выводит данные, то они похожи. Однако даже в этом случае они не совпадают, поскольку VIEW могут быть оптимизированы с помощью движка. Например, если вы запустите SELECT * FROM view1 WHERE x = 10; и у вас есть индекс на поле таблицы, которое отображается на X, тогда он будет использоваться. С другой стороны, функция создает результирующий набор перед поиском, поэтому вам придется перемещать ГДЕ внутри него - однако это не легко, потому что у вас может быть много столбцов, и вы не можете ЗАКАЗАТЬ все из них в одном и том же операторе выбора.
Поэтому, если вы сравниваете представления и функции для одной и той же задачи по предоставлению «представления» над данными, тогда VIEWs - лучший выбор.
НО, функции могут делать гораздо больше. Вы можете выполнять несколько запросов без необходимости объединения таблиц с JOINS или UNION. Вы можете выполнять сложные вычисления с результатами, выполнять дополнительные запросы и выводить данные для пользователя. Функции больше похожи на хранимые процедуры, которые могут возвращать наборы данных, чем на представления.