gpt4 book ai didi

SQL "IF"、 "BEGIN"、 "END"、 "END IF"?

转载 作者:行者123 更新时间:2023-12-02 11:10:58 25 4
gpt4 key购买 nike

根本不是 SQL 人员。让顾问编写以下代码。

首先,它确保只选择了一所小学 - 然后,在 BEGIN 之后,如果变量 @Term 等于 3,我们想要在 IF 语句下执行操作。问题就在这里。当 @Term 不 = 3 时,我们仍然想要下拉并执行 SECOND INSERT INTO @Classes 部分。仅供引用 - 运行时,Term = 3,但它并没有同时执行 INSERT - 是否应该在“IF @Term = 3”部分的末尾有一个 END IF 而不是一个普通的 END?

IF @SchoolCategoryCode = 'Elem' 

--- We now have determined we are processing an elementary school...

BEGIN

---- Only do the following if the variable @Term equals a 3 - if it does not, skip just this first part

IF @Term = 3

BEGIN

INSERT INTO @Classes

SELECT
XXXXXX
FROM XXXX blah blah blah

END <----(Should this be ENDIF?)

---- **always** "fall thru" to here, no matter what @Term is equal to - always do the following INSERT for all elementary schools

INSERT INTO @Classes
SELECT
XXXXXXXX
FROM XXXXXX (more code)

END

最佳答案

它与 SQL 语言的范式有关。根据定义,IF 语句只能采用单个 SQL 语句。但是,有一种特殊的 SQL 语句可以包含多个 SQL 语句,即 BEGIN-END block 。

如果省略 BEGIN-END block ,您的 SQL 将正常运行,但它只会执行作为 IF 一部分的第一条语句。

基本上是这样的:

IF @Term = 3
INSERT INTO @Classes
SELECT
XXXXXX
FROM XXXX blah blah blah

BEGIN-END block 等效,因为您只执行一条语句。然而,出于同样的原因,在类 C 语言的 IF 语句中不包含大括号是一个坏主意,始终最好使用 开始END

关于SQL "IF"、 "BEGIN"、 "END"、 "END IF"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/404029/

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