как я могу решить эту проблему?Динамические таблицы из UDF в SQL Server
Когда я пытаюсь EXEC это один: select dbo.GetDataById()
Я получаю сообщение об ошибке:
только функции и расширенные хранимые процедуры могут выполняться из функции.
как я могу решить эту проблему?Динамические таблицы из UDF в SQL Server
Когда я пытаюсь EXEC это один: select dbo.GetDataById()
Я получаю сообщение об ошибке:
только функции и расширенные хранимые процедуры могут выполняться из функции.
Вы не можете использовать динамически созданный SQL внутри функции. Для этого вам нужно использовать хранимую процедуру.
Но в вашем случае я не понимаю, почему вы даже поместили свой запрос в переменную в любом случае.
это только пример .. У меня слишком длинный запрос (более 4000 символов), более 2000 таблиц в БД, и много запросов являются неопределенными, большинство из них генерируются на лету. – Sergey
Ну, тогда вы нужны хранимые процедуры. * Если * вам также необходимо присоединиться к результатам и использовать их в операторах SELECT. Тогда вы либо в недоумении, либо в каких-то действительно уродливых решениях. – Joey
С this post по Erland Sommarskog, SQL MVP сервера:
вы не можете использовать динамический SQL из используются определенные функции, написанные в T-SQL. Это связано с тем, что вы не разрешили делать что-либо в UDF, чтобы мог изменить состояние базы данных (как UDF может быть вызван как часть запроса ). Поскольку вы можете делать что-либо от динамического SQL, включая обновления, это очевидно, почему динамический SQL не разрешен.
Что вы на самом деле пытаетесь сделать? Эта функция не имеет смысла. – MartW