首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >sql server表类型冲突操作数

sql server表类型冲突操作数
EN

Stack Overflow用户
提问于 2012-10-09 05:12:31
回答 3查看 27.8K关注 0票数 18

我在两个不同的数据库模式中定义了相同的表类型。当我尝试将类型作为参数从一个架构调用到另一个架构时,我得到了以下错误:

“操作数类型clash myCustomType与myCustomType不兼容”

我有以下代码:

类型定义

代码语言:javascript
复制
CREATE TYPE myCustomType AS TABLE
(
  somevalue INT, 
  somevalue2 INT
);

存储过程定义

代码语言:javascript
复制
USE DB1
GO
CREATE PROC1( 
  @myVar myCustomType READONLY
)
AS
BEGIN
  EXEC db2.dbo.PROC2 @myVar
END

GO

USE DB2
GO
CREATE PROC2( 
  @myVar myCustomType READONLY
)
AS
BEGIN
  --do something with myVar  
END

执行

代码语言:javascript
复制
USE db1
GO
DECLARE @myVar myCustomType
INSERT into @myVar(1,2)
EXEC PROC1 @myVar

我如何解决这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-09 05:57:08

您遇到了用户定义的表类型的一个限制。

查看此Microsoft Connect item,关闭为“按设计”。

给出的理由是

  1. proc参数的表格类型必须与传入参数
  2. 的类型完全相同。如果未应用规则(1),则验证

的成本会越来越高

在数据库之间传递表型参数是不可能的,因为您不能使用如下代码

代码语言:javascript
复制
create proc PROC2( 
 @myVar db1.dbo.myCustomType READONLY
)

错误是:

类型名称'db1.dbo.myCustomType‘包含的前缀超过了最大数目。最大值为1。

仅仅因为您在DB1和DB2中为它们命名并给出相同的定义,并不能使它们成为相同的类型-它们仍然是不兼容的,就像下面的在单个数据库上也失败了一样:

代码语言:javascript
复制
CREATE TYPE myCustomTypeX AS TABLE
(
somevalue INT, 
somevalue2 INT
);
GO
create proc procX
@in myCustomTypeX readonly
AS
select * from @in myCustomTypeX;
GO
declare @myCustomTypeX TABLE
(
somevalue INT, 
somevalue2 INT
);
exec procX @myCustomTypeX

--
Msg 206, Level 16, State 2, Procedure procX, Line 0
Operand type clash: table is incompatible with myCustomTypeX
票数 16
EN

Stack Overflow用户

发布于 2014-08-04 17:09:14

我在两个数据库上都使用SQL Server 2012,此限制仍然适用。

这里有一篇很棒的文章,里面有很多变通的方法:http://www.sommarskog.se/share_data.html

对于我直接遇到的问题,我使用XML将数据表从一个进程传递到另一个进程。它很笨拙,但我一次只需要通过几十个记录。除此之外,我还会开始担心性能问题。

票数 1
EN

Stack Overflow用户

发布于 2016-06-15 21:54:01

唯一可行的方法是使用CLR用户定义的类型,而且它也有自己的限制:https://technet.microsoft.com/en-us/library/ms178069%28v=sql.105%29.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12789560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档