Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Из функции нельзя вызывать функцию 8( / 7 сообщений из 7, страница 1 из 1
25.05.2001, 13:56
    #32006286
Alexandr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из функции нельзя вызывать функцию 8(
Слушайте, чего SQL ругается, когда я из тела функции вызываю функцию? Эир недосмотр или это злоумышленно?
...
Рейтинг: 0 / 0
25.05.2001, 14:06
    #32006289
AlexUnik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из функции нельзя вызывать функцию 8(
Какой SQL и как ругается ("прежде чем болезнь лечить ее надо идентифицировать")???
...
Рейтинг: 0 / 0
25.05.2001, 14:13
    #32006292
Alexandr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из функции нельзя вызывать функцию 8(
2 AlexUnik

SQL Server 2000, а ругается он, когда я вызываю GETDATE(), высказываясь в том смысле, что инвалидное использование GETDATE() within function...
...
Рейтинг: 0 / 0
25.05.2001, 14:21
    #32006293
AlexUnik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из функции нельзя вызывать функцию 8(
Не знаю насчет SQL2000 (у меня SQL7) А почему не вызывавать эту функцию из процедуры? Во всяком случае это работает:
CREATE PROCEDURE dat AS
begin
select getdate()
end
...
Рейтинг: 0 / 0
25.05.2001, 14:39
    #32006299
Alexandr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из функции нельзя вызывать функцию 8(
2 AlexUnik

Из процедуры вызвать нельзя, потому что функция содержит могучий кусок другого запроса, из которого получает параметры... Мда, объяснил... Ну, работает так же, как классическое выражение:
SELECT SUM(A1)+AVG(A1) FROM Table1...
...
Рейтинг: 0 / 0
25.05.2001, 15:54
    #32006320
zamm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из функции нельзя вызывать функцию 8(
Все правильно, что не вызывает getdate() из UDF.
Об этом написанно в доке.

Фрагмент из BOLа:
...
Built-in nondeterministic functions are not allowed in the body of user-defined functions; they are as follows:

@@CONNECTIONS @@TOTAL_ERRORS
@@CPU_BUSY @@TOTAL_READ
@@IDLE @@TOTAL_WRITE
@@IO_BUSY GETDATE
...
@@TOTAL_WRITE
GETDATE
GETUTCDATE
...


т.е. есть так называемые deterministic и nondeterministic встроенные функции. Если посмотреть раздел Date & Time Functions в BOLе, то в таблице функций будет написано какая из них deterministic, а какая нет, соответственно ту и можно вызвать из UDF.
...
Рейтинг: 0 / 0
25.05.2001, 17:03
    #32006326
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из функции нельзя вызывать функцию 8(
Запрет использования в UDF функции GETDATE() можно обойти, если передавать значение GETDATE в UDF непосредственно в момент вызова

CREATE FUNCTION dbo.fn_myfunc(@today datetime, .....)

и соответсвенно

SELECT ...., dbo.fn_myfunc(GETDATE(), ...) AS ...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Из функции нельзя вызывать функцию 8( / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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