我试图在交互式sql中使用if..elseif..else条件并执行查询,但语法错误。
我已经在官方网站上检查了一些伪代码,并执行了一些修改后的相同代码,但是它给出了相同的语法错误。
我在其中找到伪代码的官方网站: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc01031.0400/doc/html/asc1252677186261.html
执行后给出以下语法错误。
错误: 无法执行语句。 第3行上'ELSEIF'附近的语法错误 SQLCODE = -131,ODBC 3状态='42000' 第1行,第1列
经过一些修改的代码:-
SELECT
(IF 1=1 THEN 1
ELSEIF 2=2 AND 3=3 THEN 1.5
ELSE 2
END)
未经修改的伪代码:-
SELECT (IF Price<1000 THEN 1
ELSEIF Price >= 1000 AND Price <1500 THEN 1.5
ELSE 2
END)
答案 0 :(得分:0)
您正在尝试使用if expression而不是if 语句。 if表达式不支持elseif。解决方案是使用您发现的case语句。
答案 1 :(得分:0)
我赞成 Graeme 的回答,因为我从来不知道 Sybase 中有两种不同的东西,if expression
和 if statement
。但是,我不确定关于“if 表达式不支持 elseif”的答案是否正确。基于 Sybase documentation,
IF-THEN-ELSEIF-THEN 表达式的效果类似于 CASE 表达式。
更可能是 Transact-SQL statement
和 Sybase IQ IF statement
之间的区别。
与 Sybase IQ IF 语句相比,Transact-SQL IF 语句没有 THEN。 Transact-SQL 版本也没有 ELSE IF 或 END IF 关键字。