t sql «выберите регистр» против «если… еще» и объяснение «начала»
У меня мало опыта с т sql, и я должен написать сохраненный.
Это мое хранится:
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
И это мои вопросы:
1 - Есть ли макроскопические ошибки?
2 - Кто-то предлагает использовать "ВЫБЕРИТЕ ДЕЛО " кто-то еще, чтобы использоватьЕСЛИ ЕЩЕ", какие'Разница? И какой вариант лучше для меня хранится?
3 - яя не уверен насчет использованияНАЧАТЬ ... КОНЕЦ " заявление, в частности в сочетании с "ЕСЛИ ЕЩЕ" заявление. Что это значит? Нужно ли ставитьНАЧАТЬ ... КОНЕЦ " внутри "ЕСЛИ ЕЩЕ" заявление? Также для выполнения одной инструкции?