t sql "Groß- und Kleinschreibung auswählen" vs "if ... else" und Erklärung zu "begin"
Ich habe wenig erfahrungen mit tsql und muss eine gespeicherte schreiben.
Dies ist meine gespeicherte:
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
Und das sind meine Fragen:
1 - Gibt es makroskopische Fehler?
2 - Jemand schlägt vor, "SELECT CASE" zu verwenden, jemand anderes, um "IF ... ELSE" zu verwenden. Was ist der Unterschied? Und was ist die beste Option für meine gespeicherten?
3 - Ich bin mir nicht sicher, ob die Anweisung "BEGIN ... END" verwendet wird, insbesondere in Kombination mit der Anweisung "IF ... ELSE". Was heißt das? Muss "BEGIN ... END" in die Anweisung "IF ... ELSE" eingefügt werden? Auch zur Ausführung eines einzelnen Befehls?