db2存储过程if else变量比较

时间:2014-02-08 00:12:45

标签: sql db2

我正在尝试使用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个值,但是我的比较不起作用(语法不正确?),它总是转到最后一个,就像它永远无法匹配一样。我知道那里有价值,但不是以这种方式比较......谢谢

1 个答案:

答案 0 :(得分:0)

您在编写SQL-PL代码吗?因为变量直接由其名称引用,而不是“@”符号。

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

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