用户在数据库中定义TYPE

时间:2012-03-06 10:25:04

标签: sql-server-2008 tsql user-defined-functions

我有一个数据库,其中包含我在多个数据库中使用的常用功能。其中一个函数将表作为参数,即用户定义的TYPE。我想知道是否有办法从另一个数据库调用此函数。

我试图在其他数据库中定义类型,如下所示:

DECLARE @bits as Common.dbo.Bits

但是我收到了错误太多的前缀

我尝试将TYPE添加到每个数据库,然后将该类型的表传递给公共数据库中的函数,但是我得到了错误

  

操作数类型冲突:位与位

不兼容

2 个答案:

答案 0 :(得分:7)

你做不到。即使您在两个数据库中以相同的方式声明类型,它们也不会被视为相同。并且DECLARE语句只允许使用模式名称和对象名称,因此无法从其他数据库引用类型。

另请参阅this question了解一些可能的解决方法(如果您控制所涉及的两个数据库)

答案 1 :(得分:5)

根据Creating User-Defined Data Types

  

如果在模型数据库中创建了用户定义的数据类型,则为   存在于所有新的用户定义数据库中。但是,如果数据类型是   在用户定义的数据库中创建,数据类型仅存在于该数据库中   用户定义的数据库。