t sql „select case” vs „if… else” i wyjaśnienie „begin”

Mam niewiele doświadczeń z t sql i muszę napisać.

To jest moje zapisane:

USE myDatabase
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[myStored]
(
@myPar1 INT,
@myPar2 SMALLDATETIME
)

AS

BEGIN
  SET NOCOUNT ON

  IF EXISTS (
            SELECT 
            1 

            FROM 
            myTable1 

            WHERE 
            myPar1 = @myPar1
            AND myPar2 = @myPar2
            )

    BEGIN
      DELETE FROM  
      myTable1  

      WHERE 
      myPar1 = @myPar1
      AND myPar2 = @myPar2
    END

  ELSE 

    IF EXISTS (
              SELECT 
              1 

              FROM 
              myTable2 

              WHERE 
              myPar2 = @myPar2
              )

      BEGIN
        INSERT INTO  
        myTable1
        (myField1, myField2, myField3, myField4)

        VALUES
        (@myPar1, @myPar2, '', 1)
      END    

    ELSE

      IF EXISTS (
                SELECT 
                1 

                FROM 
                myTable3 

                WHERE 
                myPar2 = @myPar2
                )

        BEGIN
          INSERT INTO  
          myTable1
          (myField1, myField2, myField3, myField4)

          VALUES
          (@myPar1, @myPar2, '', 1)
        END
END

Oto moje pytania:

1 - Czy są błędy makroskopowe?

2 - Ktoś sugeruje, aby użyć kogoś „SELECT CASE”, aby użyć „IF ... ELSE”, jaka jest różnica? A jaka jest najlepsza opcja dla moich przechowywanych?

3 - Nie jestem pewien co do użycia instrukcji „BEGIN ... END”, w szczególności w połączeniu z instrukcją „IF ... ELSE”. Co to znaczy? Czy konieczne jest wstawienie „BEGIN ... END” w instrukcji „IF ... ELSE”? Również do wykonania pojedynczej instrukcji?

questionAnswers(3)

yourAnswerToTheQuestion