gpt4 book ai didi

sql - t sql "select case"vs "if ... else"以及关于 "begin"的解释

转载 作者:行者123 更新时间:2023-12-03 21:27:10 25 4
gpt4 key购买 nike

我对 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”语句中?也用于执行单条指令?

最佳答案

  • 此脚本中没有错误。
  • Case 语句用于表达式评估,而不用于语句执行。因此,不能在当前要求中使用。有关案例陈述的更多详细信息,请查看 http://msdn.microsoft.com/en-us/library/ms181765.aspx
  • 通常,一个语句可以是单一的或复合的。复合语句是语句的组合。对于 IF 条件,可以指定单个或复合语句,并且 SQL 服务器选择将其分组到 BEGIN .. END 中(与少数其他数据库/编程语言不同)。 ELSE 也是如此。因此,IF 后面应该跟 BEGIN...END,ELSE 后面应该跟 BEGIN...END。更多详情请引用http://msdn.microsoft.com/en-us/library/ms182717(v=sql.120).aspx
  • 关于sql - t sql "select case"vs "if ... else"以及关于 "begin"的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20669192/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com