0

как я могу решить эту проблему?Динамические таблицы из UDF в SQL Server

Когда я пытаюсь EXEC это один: select dbo.GetDataById()

Я получаю сообщение об ошибке:

только функции и расширенные хранимые процедуры могут выполняться из функции.

+1

Что вы на самом деле пытаетесь сделать? Эта функция не имеет смысла. – MartW

ответ

0

Вы не можете использовать динамически созданный SQL внутри функции. Для этого вам нужно использовать хранимую процедуру.

Но в вашем случае я не понимаю, почему вы даже поместили свой запрос в переменную в любом случае.

+0

это только пример .. У меня слишком длинный запрос (более 4000 символов), более 2000 таблиц в БД, и много запросов являются неопределенными, большинство из них генерируются на лету. – Sergey

+0

Ну, тогда вы нужны хранимые процедуры. * Если * вам также необходимо присоединиться к результатам и использовать их в операторах SELECT. Тогда вы либо в недоумении, либо в каких-то действительно уродливых решениях. – Joey

2

С this post по Erland Sommarskog, SQL MVP сервера:

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

Смежные вопросы