2012-10-08 9 views
0

I 사용자 프로파일을 작성하는 저장 프로 시저, 내 양식은 다음과 같은 필드가 있습니다저장 프로 시저

FirstName, 
LastName. 
EmailAddress, 
ZipCode, 
Password 

우편 번호는 FK입니다 항목이 그의 PK를 사용할 수있는 경우, 그 테이블을 쿼리

LocationId bigInt (identity index) 
ZipCode smallint 

방법 내 저장 프로 시저 내에서 있습니까 : 유형의 내 사용자 프로필에 값이 이미 테이블에 존재하지 않을 수도 있습니다 SMALLINT는 Location라고 내 저장된 프로 시저 항목?

이 지금까지 당신이 같은 SP 할 수

CREATE PROCEDURE [dbo].[SP_InsertInitialProfile] 

@FirstName   NVARCHAR(1000), 
@LastName   NVARCHAR(1000), 
@EmailAddress  NVARCHAR(1000), 
@ZipCode   SMALLINT, 
@Password   NVARCHAR(1000) 

AS 

IF (SELECT COUNT(1) FROM UserProfile WHERE EmailAddress [email protected]) = 1 
BEGIN 
    RETURN -1 
END ELSE 
BEGIN 
    INSERT INTO UserProfile(FirstName,LastName,EmailAddress,Password) 
    VALUES(@FirstName,@LastName,@EmailAddress,@Password) 

    RETURN Cast(@@IDENTITY as INT) 
END 

답변

1

내 저장 프로 시저입니다 :

  CREATE PROCEDURE [dbo].[SP_InsertInitialProfile] 

      @FirstName   NVARCHAR(1000), 
      @LastName   NVARCHAR(1000), 
      @EmailAddress  NVARCHAR(1000), 
      @ZipCode   SMALLINT, 
      @Password   NVARCHAR(1000) 

      AS 

      varCountNbr number; 

      BEGIN 

       SELECT COUNT(1) INTO varCountNbr 
       FROM 
        Location 
       WHERE 
       [email protected]; 

       IF varCountNbr = 0 
        INSERT @ZipCode INTO Location TABLE; 
       -- You have to commit here, in order to have the PK value exists. 
        COMMIT; 

       INSERT INTO USERPROFILE TABLE; 

       COMMIT; 


      END; 
+0

내가 알아 내려고, 위치 테이블을 쿼리하지 찾고를 사용자가 이미 등록 된 경우 이 이메일을 가지고 – Pacman

+0

다음 SP에서 처음으로 위치 테이블을 쿼리하여 카운트 결과를 얻은 다음 반환 된 카운트 번호를 기준으로 삽입하거나 삽입하지 않을 수 있습니다. –

+0

다른 테이블에 항목이있는 경우 PK를 찾고 해당 테이블에 추가해야하는 것이 아니라면 PK를 얻고 SP에 사용하십시오. UserProfile에 삽입하십시오. – Pacman