2013-07-16 3 views
2

하나의 SQL Server 저장 프로 시저에서 많은 테이블에 데이터를 삽입하려고합니다. 또한 데이터를 삽입 한 테이블의 ID를 사용하여 이러한 ID를 다른 테이블에 작성하여 많은 관계를 해결합니다.하나의 SQL 쿼리에 이전 테이블의 ID를 사용하는 여러 삽입 방법

이론적으로 논리는 저장 프로 시저에있는 것처럼 보이지만 실행시 첫 번째 삽입 문만 실행되었습니다. 아무도 이걸 도와 줄 수 없습니까?

Create Procedure [dbo].[InsertAllCustomerDetails] 
(
    [email protected] Bigint output, 
    @Firstname varchar(100), 
    @LastName varchar(100), 
    @Initials varchar(10), 
    @Title varchar(20), 
    @DateCreated datetime, 
    @isDeleted Bit, 
    [email protected] BIGINT Output, 
    @ContactNumber Varchar(100), 
    @ContactTypeID bigint, 
    @Street Varchar(550), 
    @AreaID BIGINT, 
    @isPreferred Bit 
    [email protected] Bigint OutPut 
) 
AS 

Insert Into Customer 
(
    FisrtName, 
    LastName, 
    Initials, 
    [Title], 
    DateCreated, 
    isDeleted 
) 
Values 
(
    @Firstname, 
    @LastName, 
    @Initials, 
    @Title, 
    @DateCreated, 
    @isDeleted 
) 
Declare @CustomerID BIGINT 
SELECT @CustomerID = @@IDENTITY 
     RETURN @CustomerID 
--This will now insert the contact details for the customer 
Insert Into ContactNumber 
(
    ContactNumber, 
    ContactTypeID 
) 
Values 
(
    @ContactNumber, 
    @ContactTypeID 
) 
Declare @ContactNumberID BIGINT 
SELECT @ContactNumberID = @@IDENTITY 
--This will insert into the CustomerContactNumber 
Insert Into CustomerContactNumber 
(
    ContactNumberID, 
    CustomerID 
) 
Values 
(
    @ContactNumberID, 
    @CustomerID 
) 
--This will insert the address 
Insert Into [Address] 
(
    Street, 
    AreaID, 
    isPreferred 
) 
Values 
(
    @Street, 
    @AreaID, 
    @isPreferred 
) 
Declare @AddressID BIGINT 
SELECT @AddressID = @@IDENTITY 
--This will insert the relationship for the customer Address table 
Insert into CustomerAddress 
(
    CustomerID, 
    AddressID 
) 
Values 
(
    @CustomerID, 
    @AddressID 
) 
+0

Scope_Identity를 사용해보십시오 (예 : SELECT @CustomerID = @@ SCOPE_IDENTITY) – Praveen

답변

2

나는 두 가지를 참조하십시오 :

  1. 당신은 Customer 삽입에 오타를 갖고있는 것 같다 다음과 같이

    저장 프로 시저는

    Insert Into Customer 
    (
        FisrtName, <-- should be FirstName? 
        LastName, 
    
  2. 당신 삽입 후 RETURN 보내는 경우 - t 첫 번째 사람이

    Declare @CustomerID BIGINT 
    SELECT @CustomerID = @@IDENTITY 
         RETURN @CustomerID  <---- This exits the sproc 
    --This will now insert the contact details for the customer 
    Insert Into ContactNumber 
    

나는 그것이 들여 쓰기에 의해 가려있어 이후 RETURN가 디버깅하지 제거했다 같은데요를 실행하는 이유 모자입니다.

+0

정말 고맙다고 생각했습니다. – Sheenie

관련 문제