0

3 つのテーブルに挿入する必要があるフォームがあります。ストアド プロシージャを作成しました (正しくありません)。

3 つのテーブル:
1. dbo.Client (ClientID, ClientName, AddressID )
2. dbo.Contact (AddressID, Addressline1, Add2, CityID ) CityID は Dropdownlist から取得されます。
3. dbo.PointOfCContact (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

エラーが発生しました: 列名または指定された値の数がテーブル定義と一致しません。

の上 INSERT INTO dbo.Contact VALUES (@Addressline1, @Addressline2, @CityID);

4

2 に答える 2

1

列名を指定する必要があります

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を使用できます

于 2012-08-10T14:49:28.203 に答える
0

構造テーブルを追加する必要があります。テーブルに列を追加する

INSERT INTO dbo.Contact (Address1, Adddres2, CityID) VALUES (@Addressline1, @Addressline2, @CityID);
于 2012-08-10T14:49:51.357 に答える