2012-09-03 79 views
1

使用 我试图建立一个SP在FB 2.5,看起来像: 火鸟SQL中<where>

where 
    (
     (kunde between :kdvon and :kdbis) 
     and 
      (AdrGrp between :AdrGrpvon and :AdrGrpbis) 
     and 
      (auftragstyp between :AuftrTypVon and :AuftrTypBis) 
     and 
      (Status between :statusvon and :statusbis) 
     and 
     IF LFDNR <> 0 THEN (LFDNUMMER = :LFDNR) 
     IF BESTELLTAG <> 0 then (bestelldatum = :BESTELLTAG) 
    ) 

它运作良好,直到if语句插入。 之后,我收到消息 SQL错误代码= -104。 令牌未知 - 第156行,第14列。 LFDNR。

IF条件定义为输入参数。使用冒号:将它们标记为参数无效。

问题 是否可以在这里使用“Where”里面的“If”? 如何使用condidional params?

TIA 罗尔夫

回答

2

试试这个:

... 
AND (LFNDR = 0 OR LFDNUMMER = :LFDNR) 
AND (BESTELLTAG = 0 OR bestelldatum = :BESTELLTAG) 

(我不知道是否LFNDRBESTELLTAG= 0子句中的参数/变量或列 - 如果它们的参数(相同作为右手部分),你应该用':'来标记它们)

+0

我必须删除使用的标准值:
和(::LFDNR为空或LFDNUMMER =:LFDNR)
工作正常 。非常感谢你。 –

+0

@ user1543973对不起? –

+0

0或''值没有正确输出(有另一个错误)。由于它们无论如何都被设置为“无”,我删除了标准值。所以这些参数有空值(如果没有值传递),我可以测试null或值。这工作正常。 –