表值参数

时间:2014-10-21 11:36:56

标签: sql-server sql-server-2008 sql-server-2008-r2

我想创建表值参数以传递下表的存储过程。

示例

表:

CREATE TABLE tabletype
(
ID int identity(1,1) not null,
cola varchar(10) null
);

创建表值参数:

CREATE TYPE tt as table( cola varchar(10));

创建存储过程:

CREATE PROC sptabletype
@tabtype tt readonly 

AS

INSERT INTO tabletype
select * from @tabtype
EXCEPT
select * from tabletype

select @@ROWCOUNT

GO 

注意:创建存储过程时出错。

错误

All queries combined using a UNION, INTERSECT or EXCEPT operator 
must have an equal number of expressions in their target lists.

2 个答案:

答案 0 :(得分:1)

您的问题是,tabletype有2列,而您的类型tt只有1.正如错误所示,yuo需要具有相同数量的列,这些列返回的查询的两个部分。我怀疑你想做的是:

select cola from @tabtype
EXCEPT
select cola from tabletype

答案 1 :(得分:1)

看起来你的表格不匹配。如错误所示,请点如下

select cola from @tabtype
EXCEPT
select cola from tabletype