将Table Valued参数传递给跨不同数据库的存储过程

hgu*_*yan 10 sql-server stored-procedures table-valued-parameters

我正在使用SQL Server 2008.

如何将Table Valued参数传递到跨不同数据库存储过程,但是相同的服务器?

我应该在两个数据库中创建相同的表类型吗?

请根据问题给出一个示例或链接.

谢谢你的帮助.

Dam*_*ver 11

回应此评论(如果我是正确的,并且无法在数据库之间使用TVP):

在这种情况下我有什么选择?使用XML类型?

纯粹的方法是说如果两个数据库都使用相同的数据,它们应该合并到一个数据库中.实用主义者意识到这并不总是可行的 - 但是因为你显然可以改变调用者和被调用者,所以可能只使用存储过程都知道的临时表.


我不相信它是可能的 - 您不能从另一个数据库引用表类型,即使在两个DB中具有相同的类型定义,一种类型的值也不能分配给另一种类型.


您不在数据库之间传递临时表.临时表始终存储在tempdb中,并且只要连接打开且临时表未被删除,您的连接就可以访问它.

因此,您在调用者中创建临时表:

CREATE TABLE #Values (ID int not null,ColA varchar(10) not null)
INSERT INTO #Values (ID,ColA)
/* Whatever you do to populate the table */
EXEC OtherDB..OtherProc
Run Code Online (Sandbox Code Playgroud)

然后在被叫方:

CREATE PROCEDURE OtherProc
/* No parameter passed */
AS
    SELECT * from #Values
Run Code Online (Sandbox Code Playgroud)