0

我有一个以布尔结果参数作为输出的存储过程。但是我的项目需要使用3个数据库。基本上,有一个主数据库和另外两个。其他数据库使用相同的存储过程,但它们只依赖于参数。如果我解释这个场景,你就会明白。首先,抱歉解释不好。

此应用程序使用主数据库进行会话管理、用户配置等。这没关系。问题是同一用户必须使用 2 个不同的数据库来创建发票。我们可以假设这些用户是 IT 支持人员。他们为 2 家不同的公司工作并支持他们的产品,他们在不同的数据库中管理他们的解决方案。

用户

主数据库

某公司资料

B公司资料

用户必须为每个公司的客户创建发票。基本上他们使用相同的数据库,但数据库的名称完全不同。也许我的问题有更简单的解决方案,所以我想问一下如何在存储过程中使用动态数据库名称?我当前的问题是我将存储过程初始化为字符串,然后我将存储过程作为字符串执行。

过程没有错误,也说我成功完成但没有插入(在存储过程中)。当我在 Management Studio 中使用 sql 命令(我手动设置为字符串)时,Query 运行良好。

作为总结,

我有 3 个数据库,主数据库需要执行生成 Invoice 存储过程。但是由于不同的公司,数据库名称必须是动态的。

当我发送数据库名称 A_COMPANY_DB 时,存储过程应该在 A_COMPANY_DB 中执行。当我发送 B_COMPANY_DB 时,存储过程应该执行 B_COMPANY_DB。

A_COMPANY 和 B_COMPANY 数据库都是相同的。由于动态数据库名称,我必须将 sql 查询作为字符串管理。所以我无法达到输出参数。

我的存储过程只有一个输出参数,它是位类型。但我不能像这样使用它:

    Set @dynsql = 'USE ' + QUOTENAME(@DbName) + ' exec.[dbo].[spName] ' + other params

EXECUTE sp_executesql @dynsql 

在这种情况下,我无法达到输出参数。如何在此存储过程中设置或使用我的输出参数?

EXECUTE sp_executesql @dynsql @outputparam OUT

有可能或任何解决方案吗?

抱歉解释不好。

4

0 回答 0