En respuesta a este comentario (si estoy en lo correcto y que el uso de TVP entre bases de datos no es posible):
Qué opción tengo en esta situación? ¿Usando el tipo XML?
El enfoque purista sería decir que si ambas bases de datos trabajan con los mismos datos, deberían fusionarse en una única base de datos. El pragmático se da cuenta de que esto no siempre es posible, pero dado que obviamente puede cambiar tanto la persona que llama como la llamada, tal vez solo use una tabla temporal que ambos procesos almacenados conocen.
No creo que sea posible - no se puede hacer referencia a un tipo de tabla de otra base de datos, e incluso con las definiciones de tipo idénticas en ambos DBs, un valor de un tipo no se puede ceder a la otro.
usted no pase la tabla temporal entre bases de datos. Una tabla temporal siempre se almacena en tempdb y su conexión puede acceder a ella, siempre que la conexión esté abierta y la tabla temporal no se elimine.
Así, se crea la tabla temporal de la persona que llama:
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
Y luego en el destinatario de la llamada:
CREATE PROCEDURE OtherProc
/* No parameter passed */
AS
SELECT * from #Values
que no creen que sea posible - no se puede hacer referencia a un tipo de tabla desde otra base de datos, e incluso con definiciones de tipo idénticas en ambas bases de datos, un valor de un tipo no es asignable a la otra. –
¿Qué opción tengo en esta situación? ¿Usando el tipo XML? – hgulyan