DB2 存储过程(如果 ELSE 变量比较)



我正在尝试使用 like 比较 db 2 sp 中的变量,但它总是转到语句的 else 部分,有人可以纠正这里的语法吗?这是代码的一部分

do
  IF(@variable like '%abc') THEN
set @anotherVariable='abc';
  ELSEIF (@variable like '%def') THEN
set @anotherVariable='def';
  ELSEIF (@variable like '%def') THEN
set @anotherVariable='def';
  ELSE
set @anotherVariable='xyz';
  END IF;
END FOR;

这段代码是游标的一部分,查询总是返回 1 个值,但是我的比较不起作用(语法不正确?),它总是转到最后一个,就好像它永远无法匹配一样。我知道价值是存在的,但它不是以这种方式比较的......谢谢

你在写 SQL-PL 代码吗?因为变量是直接由其名称引用的,而不是前面有"@"符号。

另一件事是您在查询之外使用 like 运算符。"喜欢"不是一个函数,它是一个谓词:http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0000751.html

相反,您可以在选择中使用"case",然后返回相应的值。这样你就不需要做一个"if-else":http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0023458.html

最新更新