Почему для вызова определенной пользователем функции требуется имя владельца, а для вызова хранимой процедуры - нет? - PullRequest
1 голос
/ 05 марта 2010

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

Ответы [ 3 ]

3 голосов
/ 05 марта 2010

Полагаю, вы имеете в виду имя схемы? Владелец - это пользователь, который его создал.

Отличает функцию от встроенной функции. «Системные» хранимые процедуры и функции находятся в базе данных master (поэтому их можно искать), тогда как встроенные функции (например, DATEADD) находятся в самом движке базы данных.

Полагаю, вам сложнее указать SELECT MyFunction() для механизма базы данных, чтобы определить, имеете ли вы в виду функцию, которая находится в базе данных, или встроенную функцию.

2 голосов
/ 05 марта 2010

Это на самом деле только для скалярных функций.

0 голосов
/ 08 марта 2010

После обсуждения с Энди выше я отвечаю на свой вопрос: хранимые процедуры сохраняются в текущей базе данных соединения при его создании.В то же время функции хранятся в двух местах: в ядре базы данных (встроенные в скалярное значение) и в текущей базе данных соединения (определяемые пользователем).Поэтому при вызове пользовательских скалярных функций нам нужен префикс имени схемы, чтобы отличать их от встроенных.Нам не нужен этот префикс для других типов функций и для хранимых процедур.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...