При вставке данных в две таблицы с использованием хранимой процедуры я получаю ошибку несоответствия

У меня есть таблица под названием 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 ответа

попробуйте это, укажите имя coloumn

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


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


Вы указываете неверное количество значений в таблице, т.е. У вас есть два столбца в таблице CompanyMaster_tbl (я думаю, что ваш cid - это идентификатор (автоматически сгенерированный), поэтому я не упоминал об этом), но вы можете дать только одно значение таблице, и то же самое вещь применяется для DepartmentMaster_tbl. если вы не можете присвоить значения таблице, то укажите имена столбцов в инструкции insert, иначе укажите все значения столбца, например

Insert into CompanyMaster_tbl(CompanyName) values(@companyName)

или

Insert into CompanyMaster_tbl values(@companyName, @deleted)

licensed under cc by-sa 3.0 with attribution.