我有两个数据库"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中
还有其他想法吗?