是否可以在用户定义的函数中使用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
更新:我使用sql server
答案 0 :(得分:3)
将函数中的代码放入字符串中并通过动态sql执行
DECLARE @SQL varchar(2000)
SELECT @SQL =
'select
OWNERS.USER_ID
from
' + @dbName + '.dbo.OWNERS as OWNERS
where
OWNERS.ENTITY_ID = ' + @entityId
EXEC(@SQL)
答案 1 :(得分:1)
您需要使用动态SQL来执行此操作。这是什么DB? Here's另一个与之相关的SO问题
答案 2 :(得分:0)
您也可以使用sqlcmd
模式(在Management Studio的“查询”菜单中启用此功能)。
:setvar dbname "TEST.dbo.OWNERS"
select
OWNERS.USER_ID
from
$(dbname) as OWNERS
where
OWNERS.ENTITY_ID = @entityId
<小时/> ......这个解决方案由Stack Overflow ...
带给您
whatup @DominionDave - 很高兴有你参加SO-playa :-D