Я пытаюсь сделать скалярную функцию в SQL Server. Я придумал вверх оператор выбора следующим образом:Выполнение динамического запроса внутри скалярной функции sql server
SET @Statement1 = 'SELECT 1 FROM ' + @p_TableName +
' WHERE RegionTypeID = 1 AND RegionID = ' +
CONVERT (nvarchar (50), @p_RegionID)
Здесь @p_TableName
это имя таблицы (NVARCHAR (500)) и @p_RegionID
является UniqueIdentifier.
Я теперь выполняет вышеуказанное заявление следующим образом:
EXEC @ReturnValue1 = @Statement1
ГДЕ @ReturnValue1
является внутр.
Но когда я называю эту функцию из другого я получаю эту ошибку:
The name 'SELECT 1 FROM [PS].[Availability] WHERE RegionTypeID = 1 AND RegionID = AF4C182C-F751-41AD-AA6A-20A50A7A38C8' is not a valid identifier.
Мне нужно знать, как я могу назвать динамический SQL SELECT заявления внутри скалярной функции.
Dynamic SQL не допускается в UDFs. Проверьте [здесь] (http://www.sommarskog.se/dynamic_sql.html#UDF) для хорошей справки по этой теме. –
Спасибо ... Можете ли вы предложить обходной путь для моей проблемы? Есть ли другой способ, с помощью которого я могу написать оператор select, указанный выше? Все, что мне нужно, это знать, имеются ли RegionTypeID и RegionID? –
@SarinGopalan вы можете использовать хранимую процедуру (SP) вместо функции. Результаты SP могут быть записаны в таблицу, если вам это нужно. – gofr1