1

テーブルにデータを挿入する手順があります。テーブルに挿入する値(入力パラメータ)をVarchar型として宣言しました。しかし、テーブルの 2 つの列の列の型が Int 型に変更されました。しかし、それでも手順は値を適切に挿入しています (IssuerId 列と Employer Id 列は、基になるテーブル IssuerGroupIDMapping の int 型です)。私にとって重要な質問は、特定のシナリオで手順が失敗するかどうかです。有効な整数のみが渡されるように、C# で既にチェックインしています。手続きする。コードをすぐに変更する必要がありますか。提案してください。

以下は私の手順コードです:

CREATE PROCEDURE [uspInsertIssuerGroupIDMapping]
@EmployerID Varchar(25),    
@IssuerID Varchar(25),  
@PlanID Varchar(25),    
@IssuerGroupID Varchar(25), 
@CreateUserID Varchar(25)

*****/
AS

BEGIN TRY

    SET NOCOUNT ON
    SET XACT_ABORT ON

    --check to see if a duplicate trigger exists
    IF ( NOT EXISTS (SELECT 1 FROM [IssuerGroupIDMapping] 
                             WHERE EmployerId = @EmployerID AND PlanId = @PlanID)
                    )

    BEGIN


        INSERT INTO [IssuerGroupIDMapping]
               ([EmployerId]
               ,[IssuerId]
               ,[PlanId]
               ,[IssuerGroupID]
               ,[CreateUserId]
               ,[CreateDate]
               ,[UpdateUserId]
               ,[UpdateDate]
               )
         VALUES
               ( 
                 @EmployerID
                ,@IssuerID
                ,@PlanID
                ,@IssuerGroupID
                ,@CreateUserId
                ,(SELECT Framework.udfGetTimeTravelDate())
                ,@CreateUserId
                ,(SELECT Framework.udfGetTimeTravelDate())
               );

               SELECT @@ROWCOUNT;
        END
        ELSE
        BEGIN
            --if a duplicate record exists update it
            UPDATE [IssuerGroupIDMapping] SET 
                                 IssuerId = @IssuerID
                                ,IssuerGroupID = @IssuerGroupID
                                ,UpdateDate = (SELECT Framework.udfGetTimeTravelDate())
                                ,UpdateUserId = @CreateUserID

            WHERE EmployerId = @EmployerID
                                    AND PlanId = @PlanID

            SELECT @@ROWCOUNT;

        END
4

2 に答える 2