2014-02-08 64 views
0

我想比較一個變量在db 2 sp中使用like,但是它總是去到語句的else部分,有人可以更正這裏的語法..這裏是部分代碼db2存儲過程如果其他變量比較

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,但是我比較不工作(不正確的語法?),它總是轉到最後否則,就好像它從來都不是能夠匹配。我知道價值在那裏,但它沒有以這種方式進行比較......謝謝

+0

什麼是變量的一些樣本值? (包括任何空格) – WarrenT

回答

0

您是否在編寫SQL-PL代碼?因爲變量直接由其名稱引用,而不是以'@'符號開頭。

另一件事是你在查詢外使用類似的操作符。 '喜歡'不是函數,它是一個謂詞: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

+0

是的,我改變了查詢,並使用case語句代替...我早先想到了這個,但由於某種原因卡在遊標的心態..謝謝 – user1063108