[英]Stored Proc to insert into 3 tables using IDs
我有一個必須插入3個表格的表格。 我已經創建了一個存儲過程(不正確)。
3張桌子:
1. dbo.Client(ClientID,ClientName, AddressID )
2. dbo.Contact(AddressID,Addressline1,Add2, CityID )CityID來自下拉列表。
3. dbo.PointOfCContact(POCID,名字等)
我的存儲過程
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
收到錯誤消息:列名或提供的值數與表定義不匹配。
在INSERT INTO dbo.Contact VALUES (@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
語法http://technet.microsoft.com/en-us/library/bb510625.aspx
您必須添加結構表; 向表添加列
INSERT INTO dbo.Contact (Address1, Adddres2, CityID) VALUES (@Addressline1, @Addressline2, @CityID);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.