sql-server - 如何从函数内部查询动态数据库名
问题描述
ALTER FUNCTION FnVersion
(@DBName NVARCHAR(255),
@ID INT)
RETURNS @TABLE TABLE (iD INT, VersionNo INT)
AS
BEGIN
DECLARE @SQL VARCHAR(2000)
SET @SQL = @DBName
SELECT @SQL = 'SELECT iD, VersionNo FROM' + @DBName + '.dbo.ConfigInfo WHERE IdValue = @ID'
EXECUTE SQL
RETURN;
END
db 名称将作为输入传递,查询将在动态数据库上进行 exec SQL 语句的上述逻辑导致错误。
从动态数据库实现动态查询的方法是什么?
解决方案
您不能在 SQL 函数中使用动态 SQL。但使其成为过程的一部分,并通过远程过程调用将这些数据存储到临时表中。使用远程过程而不是远程查询性能会更好。
您可以将 INSERT INTO 与 EXEC 命令一起使用。并用您的逻辑操作临时表。这将是更好的方法。
推荐阅读
- php - 登录后如何根据他们所在的组将成员重定向到特定页面?
- vba - 插入和切割列的VBA循环?
- python - 使用面向对象的界面将 matplotlib 轴设置为其他图形的轴
- python - 在python中失败后自动重复查询股票
- windows - 脚本以集体更改文件夹权限
- highcharts - 这个 Highstocks UI 元素是什么,它可以独立于工具提示进行控制吗?
- php - 在 PHP 中,如何在为类定义公共变量时使用变量作为 key=>value 对中的值?
- c# - 当 typeName 表示具有无效大小的数组类型时,Type.GetType() 会抛出
- java - 在 Spring-boot 中忽略特定请求中的字段
- r - 是否有可以像 print.default 那样添加行间距的功能