0

ユーザープロファイルを作成するストアドプロシージャがあります。フォームには次のフィールドがあります。

FirstName,
LastName.
EmailAddress,
ZipCode,
Password

郵便番号は、私のUserProfileのsmallintタイプのFKであり、値は次のテーブルに存在する場合と存在しない場合がありますLocation

LocationId bigInt (identity index)
ZipCode smallint

ストアドプロシージャ内からそのテーブルをクエリする方法はありますか?アイテムが存在する場合は、ストアドプロシージャでそのエントリのPKを使用しますか?

これはこれまでのストアドプロシージャです

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 =@EmailAddress) = 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
4

1 に答える 1

1

次のようにSPを実行できます。

           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 
                 ZipCode=@ZipCode;

               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;
于 2012-10-08T23:15:45.340 に答える