Как использовать тип данных (таблица), определенная в другой базе данных в SQL2k8?

Мне определили Тип Таблицы в базе данных. Это используется в качестве табличного параметра в хранимой процедуре. Я хотел бы назвать эту процедуру от другой базы данных, и для передачи параметра, я должен сослаться на этот определенный тип.

Но когда я делаю DECLARE @table dbOtherDatabase.dbo.TypeName , это говорит мне это The type name 'dbOtherDatabase.dbo.TypeName' contains more than the maximum number of prefixes. The maximum is 1.

Как я мог сослаться на этот тип таблицы?

6
задан Stop Harming Monica 20 December 2010 в 10:01
поделиться

3 ответа

Cross-database user-defined types, похоже, работает только для типов на основе CLR. См. этот форум и MSDN (плюс комментарии).

2
ответ дан 17 December 2019 в 20:29
поделиться

Нельзя ли просто определить тип в обеих базах данных.

Редактировать

Смотрите эту статью о том, как сделать то, что вы требуете

0
ответ дан 17 December 2019 в 20:29
поделиться

вы можете попробовать использовать sp_executesql:

DECLARE @mylist integer_list_tbltype,
        @sql nvarchar(MAX)
SELECT  @sql = N'SELECT p.ProductID, p.ProductName
                 FROM    Northwind..Products p
                 WHERE   p.ProductID IN (SELECT n FROM @prodids)'
INSERT @mylist VALUES(9),(12),(27),(37)
EXEC sp_executesql @sql, N'@prodids integer_list_tbltype READONLY', @mylist

и если это не сработает, вам, возможно, придется создать процедуру-обертку в удаленной БД, где вы передаете строку CSV, а процедура-обертка разбивает ее и создает таблицу (теперь используя локальный тип таблицы), чтобы затем передать ее в фактическую процедуру. См. этот ответ для объяснения того, как разделить строку CVS.

0
ответ дан 17 December 2019 в 20:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: