Возможно ли использовать имя DB в качестве параметра в пользовательской функции?DB name как параметр в пользовательской функции
Например, я пытался использовать конкатенацию, но она не работает таким образом:
create function fn_getEntityOwners (@dbName varchar, @entityId bigint)
returns table
as
return
select
OWNERS.USER_ID
from
@dbName + '.dbo.OWNERS' as OWNERS
where
OWNERS.ENTITY_ID = @entityId
UPDATE: Я использую SQL сервер
возможный дубликат [Как использовать переменную для имени базы данных в t-sql] (http://stackoverflow.com/questions/727788/how-to-use-variable-for-database-name-in-t-sql) –
@AndriyM. Мой вопрос более конкретный, потому что мне нужно использовать имя БД в качестве параметра в пользовательской функции, а функция накладывает некоторые ограничения. – ako
Ну, вы просто не можете параметризовать * имя * (имя базы данных, имя столбца, имя таблицы). Почти все ответы (как здесь, так и здесь) предлагают использовать динамический SQL. Вы не можете использовать динамический SQL в функции, что означает, что вы не получаете нигде с * этим конкретным вопросом *. Я бы предложил вам задать новый вопрос, где вам может понадобиться немного рассказать о том, что вы пытаетесь сделать, и где вы конкретно спросите об альтернативах использованию динамического SQL (или, возможно, альтернатив использованию функции?). , –