我想创建表值参数以传递下表的存储过程。
示例:
表:
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.
答案 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