这段代码如何运作?
if name <> '' then
begin
sql_1
end
else if PARAMETRIC then
begin
sql2
end
else
begin
sql3
end
end;
执行由if或elseif选择的sql或者其他.....
name = is a string
PARAMETRIC = is a boolean
sql1, sql2, sql3 are different queries (sorry for forgot it :( )
答案 0 :(得分:1)
简而言之:
name
不为空,则仅 sql_1
将被执行name
为空且PARAMETRIC
为true
,则仅 sql_2
将被执行name
为空且PARAMETRIC
为false
,则仅 sql_3
将被执行您始终可以添加begin
/ end
语句,以使其看起来更加明显。
if name <> '' then
begin
sql_1
end
else
begin
if PARAMETRIC then
begin
sql2
end
else
begin
sql3
end;
end;
end;
答案 1 :(得分:1)
你说(在评论中)你知道C#。好吧,在Delphi中,它的工作方式完全相同。你可以编写if ... else语句,并在else之后添加一个额外的条件。
在德尔福:
if condition1 then
begin // Open multi-line statement.
Do1a;
Do1b;
end
else if condition2 then
Do2;
在C#中:
if (condition1)
{ // Open multi-line statement.
Do1a;
Do1b;
}
else if (condition2)
Do2;
所以,虽然我并不真正理解这种混淆,但你的问题的答案是:不,他们没有全部被执行。如果condition1为true,那么&#39; elses&#39;不会被执行。如果condition1为false且condition2为true,则执行第二个语句(do2)。如果两者都为假,则不执行任何操作(或者在您的情况下,执行无条件else
,因此您获得SQL3)。