我对 t 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 - 有人建议使用“SELECT CASE”别人使用“IF ... ELSE”,有什么区别?什么是我存储的最佳选择?
3 - 我不确定“BEGIN ... END”语句的使用,特别是与“IF ... ELSE”语句的结合。这是什么意思?是否有必要将“BEGIN ... END”放在“IF ... ELSE”语句中?也用于执行单条指令?
最佳答案
关于sql - t sql "select case"vs "if ... else"以及关于 "begin"的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20669192/