SQL Anywhere if..elseif..else语法错误

时间:2019-04-08 18:04:04

标签: sybase sqlanywhere isql

我试图在交互式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)

2 个答案:

答案 0 :(得分:0)

您正在尝试使用if expression而不是if 语句。 if表达式不支持elseif。解决方案是使用您发现的case语句。

答案 1 :(得分:0)

我赞成 Graeme 的回答,因为我从来不知道 Sybase 中有两种不同的东西,if expressionif statement。但是,我不确定关于“if 表达式不支持 elseif”的答案是否正确。基于 Sybase documentation,

<块引用>

IF-THEN-ELSEIF-THEN 表达式的效果类似于 CASE 表达式。

更可能是 Transact-SQL statementSybase IQ IF statement 之间的区别。

<块引用>

与 Sybase IQ IF 语句相比,Transact-SQL IF 语句没有 THEN。 Transact-SQL 版本也没有 ELSE IF 或 END IF 关键字。