В ответ на этот комментарий (если я правильно и что использование TVPs между базами данных не представляется возможным):
Какой у меня есть выбор в этой ситуации? Использование типа XML?
Пуристский подход должен был бы сказать, что если обе базы данных работают с одними и теми же данными, их следует объединить в одну базу данных. Прагматик понимает, что это не всегда возможно, но поскольку вы, очевидно, можете изменить как вызывающего, так и вызываемого, возможно, просто используйте временную таблицу, о которой знают как хранимые процессы.
Я не верю, что это возможно - вы не можете ссылаться на тип таблицы из другой базы данных, и даже с одинаковыми определениями типов в обоих блоков данных, значение одного типа не может быть назначен на Другие.
Вы не делаете Пропустите на временную таблицу между базами данных. Временная таблица всегда хранится в tempdb и доступна для вашего соединения, пока соединение открыто, а таблица temp не отбрасывается.
Таким образом, вы создаете временную таблицу в вызывающем:
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
, а затем в вызываемым:
CREATE PROCEDURE OtherProc
/* No parameter passed */
AS
SELECT * from #Values
Я не верю, что это возможно - вы не можете ссылаться на тип таблицы из другой базы данных и даже с идентичными определениями типов в обеих БД значение одного типа не присваивается другому. –
Какой у меня выбор в этой ситуации? Использование типа XML? – hgulyan