Sql 使用ID将存储的进程插入到3个表中
我有一个表单,必须插入到3个表中。我创建了一个存储过程(这是不正确的) 3个表格:Sql 使用ID将存储的进程插入到3个表中,sql,sql-server,Sql,Sql Server,我有一个表单,必须插入到3个表中。我创建了一个存储过程(这是不正确的) 3个表格: 1.dbo.Client(ClientID、ClientName、AddressID) 2.dbo.Contact(AddressID、Addressline1、Add2、CityID)CityID来自Dropdownlist。 3.dbo.pointofcontact(POCID,FirstName,…) 我的存储过程 Create PROCEDURE sp_Clientdetails( @Client
1.dbo.Client(ClientID、ClientName、AddressID)
2.dbo.Contact(AddressID、Addressline1、Add2、CityID)CityID来自Dropdownlist。
3.dbo.pointofcontact(POCID,FirstName,…)
我的存储过程
Create PROCEDURE sp_Clientdetails(
@ClientName varchar(50),
@Addressline1 varchar(50),
@Addressline2 varchar(50),
@CityID INT,
@Firstname varchar(50),
@LastName varchar(50),
@Middlename varchar(50),
@Mob1 numeric(10,0),
@Mob2 numeric(10,0),
@Email1 varchar(50),
@Email2 varchar(50),
@phone varchar(50),
@Extention INT
)
AS
DECLARE @AddressID int, @ClientID int, @POCID int;
Set NOCOUNT OFF
BEGIN TRANSACTION
IF NOT EXISTS(Select 1 FROM dbo.Contact Where AddressID=@AddressID)
BEGIN
INSERT INTO dbo.Contact VALUES (@Addressline1, @Addressline2, @CityID);
SET @AddressID = SCOPE_IDENTITY();
SET @CityID = SCOPE_IDENTITY();
END
ELSE
Select AddressID = @AddressID From dbo.Contact Where AddressID=@AddressID;
IF NOT EXISTS(Select 1 FROM dbo.Client Where ClientID=@ClientID)
BEGIN
INSERT INTO dbo.Client VALUES (@ClientID, @AddressID, @CityID);
SET @ClientID= SCOPE_IDENTITY();
END
ELSE
Select ClientID = @ClientID From dbo.Client Where ClientID = @ClientID;
Insert into dbo.PointOfCContact VALUES (@Firstname, @LastName, @Middlename, @Mob1, @Mob2,
@Email1, @Email2, @phone, @Extention);
SET @POCID= SCOPE_IDENTITY();
COMMIT
获取错误:提供的值的列名或数量与表定义不匹配
在
中插入dbo.Contact值(@Addressline1、@Addressline2、@CityID)代码>您应该指定列名
INSERT INTO dbo.Contact (Address1, Adddres2, CityID)
VALUES (@Addressline1, @Addressline2, @CityID);
....
INSERT INTO dbo.Client (ClientID, AddressID, CityID)
VALUES (@ClientID, @AddressID, @CityID);
等
更好的是,您可以使用MERGE
语法
您必须添加结构表;向表中添加列
INSERT INTO dbo.Contact (Address1, Adddres2, CityID) VALUES (@Addressline1, @Addressline2, @CityID);
插入dbo.Contact(Address1,Adddres2,CityID)值(@Addressline1,@Addressline2,@CityID);设置@AddressID=SCOPE_IDENTITY();在dbo.Client(ClientID,AddressID,CityID)中插入值(@ClientID,@AddressID,@CityID)你是说像这样吗?@女孩是的。您应该将列名添加到所有INSERT语句中。