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

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

Из процедуры вызвать нельзя, потому что функция содержит могучий кусок другого запроса, из которого получает параметры... Мда, объяснил... Ну, работает так же, как классическое выражение:
SELECT SUM(A1)+AVG(A1) FROM Table1...
...
Рейтинг: 0 / 0
Из функции нельзя вызывать функцию 8(
    #32006320
zamm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все правильно, что не вызывает 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
Из функции нельзя вызывать функцию 8(
    #32006326
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрет использования в UDF функции GETDATE() можно обойти, если передавать значение GETDATE в UDF непосредственно в момент вызова

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

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

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


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