使用存储过程将数据插入两个表时,我遇到了不匹配错误

时间:2013-12-26 10:23:30

标签: sql sql-server stored-procedures

我有一个名为CompanyMaster_tbl的表,其表结构如下。

Cid  CompanyName  Deleted 

和另一个名为DepartmentMaster_tbl的表,其表结构如下。

dtld  dtname dtphone dtemail  cid deleted

我编写了一个存储过程,用于将数据插入这些表中,如下所示。

CREATE PROCEDURE [dbo].[InsertDetails](
@companyName varchar(150),
@dname varchar(150),
@dphon varchar(150),
@deleted int,
@cid  int OUTPUT
) AS
BEGIN
INSERT INTO [dbo].CompanyMaster_tbl
    VALUES (@companyName)
    select @cid=cid
    from [dbo].CompanyMaster_tbl
    WHERE @@ROWCOUNT > 0 AND cid = scope_identity()

    insert into DepartmentMaster_tbl
    values(@dname,
    @dphon)
    end

当我执行此SP时,我收到的错误是这样的:

Column name or number of supplied values does not match table definition.

2 个答案:

答案 0 :(得分:2)

试试这个,提一下列名

      INSERT INTO [dbo].CompanyMaster_tbl (CompanyName )  
       VALUES (@companyName)


     INSERT into DepartmentMaster_tbl (dname,dphon)
        values(@dname, @dphon)

答案 1 :(得分:1)

你给表中给出了错误数量的值,即你在表CompanyMaster_tbl中有两列(我认为你的cid是身份(自动生成),我没有提到它)但是你只能给表一个值,同样的事情适用于DepartmentMaster_tbl。如果你不能给表中的值,那么在insert语句中提到列名,否则给出所有列值 e.g。

Insert into CompanyMaster_tbl(CompanyName) values(@companyName)

Insert into CompanyMaster_tbl values(@companyName, @deleted)