Вопрос про функции в SQL Server.

Lightik
Уже с Приветом
Posts: 1165
Joined: 03 Jul 2002 20:43
Location: AU

Вопрос про функции в SQL Server.

Post by Lightik »

Вопрос про функции в SQL Server.
Подскажите, плиз – я до этого с функциями не работала.
Вопрос собственно такой – если для того, чтобы запустить скалярную функцию, требуется указать еще owner перед именем функции, то как быть в ситуации, когда я не знаю, под каким owner’ом будет все это вызываться. (веб-приложение работает с базой под каким-то неизвестным мне owner.)
Может вообще можно обойтись без функций? Мне вообще надо значение поля устанавливать в зависимости от значения других полей этой и других таблиц путем вычислений с использований аггрегатных функций. Не хочется вешать это на триггер – во-первых, тяжеловато будет на update поля, во-вторых, совсем не видно, когда это самое поле обновляется, клиент любит забывать про триггера. А так: set fieldname = dbo.MyFunсtion(...).
Вот только будет ли работать это, если тот запрос или хранимая процедура, в которой написано это самое присвоение вызывается не под dbo? Какие права кому нужно для этого установить?
Не сиди, сложа руки... Сегодня первый день из тех, что тебе остались!
User avatar
GlebZ
Уже с Приветом
Posts: 1152
Joined: 03 Jan 2002 10:01
Location: NJ --> MA

Post by GlebZ »

Создать под dbo.И работать будет. А вообще поле создать как:

Code: Select all

CREATE TABLE ....
(........
[field] AS ([dbo].[function](......))
......)
Водку? Водку буду!
User avatar
chepackav
Уже с Приветом
Posts: 1513
Joined: 03 Apr 2001 09:01
Location: London, UK

Re: Вопрос про функции в SQL Server.

Post by chepackav »

owner функции определяется при ее создании, а не при ее вызове. Просто пишите владельца всегда во всех своих запросах, не оставляя SQL Server'у возможностей гадать.
User avatar
GlebZ
Уже с Приветом
Posts: 1152
Joined: 03 Jan 2002 10:01
Location: NJ --> MA

Post by GlebZ »

А функию без указания владельца и не вызвать. А чтобы не гадать, я бы как dbo её создал. Если, конечно, есть такая возможность
Водку? Водку буду!

Return to “Вопросы и новости IT”