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?