【发布时间】:2014-01-15 16:51:03
【问题描述】:
是否可以在自定义函数中使用数据库名作为参数?
例如,我尝试使用连接,但它不能以这种方式工作:
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
【问题讨论】:
-
@AndriyM 我的问题更具体,因为我需要在用户定义的函数中使用数据库名称作为参数,并且函数施加了一些限制。
-
好吧,你不能参数化一个 name(数据库名、列名、表名)。几乎所有的答案(那里和这里)都建议使用动态 SQL。您不能在函数中使用动态 SQL,这意味着您对 this specific question 无能为力。我建议您提出一个新问题,您可能想在其中详细说明您正在尝试做什么,以及您会在哪里专门询问使用动态 SQL 的替代方案(或者,也许是使用函数的替代方案?) .
-
感谢您的建议,我已经添加了一个新问题link
标签: sql-server