在不同的DB上下文中使用用户数据类型和proc



我有两个数据库"Alfha"one_answers"Betha"。

在数据库"Betha"中创建了proc_test。

它使用在数据库"Betha"中创建的用户创建类型type_test的表值参数。

我不想要,也不能把它们放在数据库"Alpha"中。

我所有的代码都必须在"Alfha"数据库上执行。

理论上,我可以在代码开始时使用"use betha",但我不能在开始时使用(我的代码由SP执行,SP在开始时添加变量声明)

--use Betha --this works
declare @sql varchar(max)
use Betha --this doesn't work
declare @table_var type_test
execute proc_test @table_var
use Alpha

我使用SQL Server 2008 R2。

如何制作要编译的代码?为什么编译器不存在声明后的"使用数据"?

请参阅https://msdn.microsoft.com/en-us/library/ms178069.aspx

不可能在数据库上下文之外调用数据类型。

"使用"中断,因为它是一个批处理分隔符。

我有一个解决方法应该是:

--use Betha --this works
declare @sql varchar(max)
use Betha --this doesn't work
set @sql= 'use Betha
declare @table_var type_test
execute proc_test @table_var'
execute (@sql)
use Alpha

我对这种变通方法不太满意,但它确实有效。

问题是我所有的代码都必须在@sql中

还有其他想法吗?

最新更新