2014-11-04 66 views
0

所以我有一个进程,别人写的具有类似下面的代码:PROC给人神秘结果

if 1 = 0 
begin 
    select 
     cast(null as int) as case_id, 
     cast(null as int) as review_id, 
end 
     --then a real select statement happens that matches the same pattern. 

现在,HP exstream以某种方式读最顶级的select语句时执行存储过程,即使它不应该被称为。如果我将列添加到实际结果查询中而未将此列作为空列添加到此隐藏查询中,则它不起作用(在HP前期中,在SQL Server中,proc将按预期运行)。

任何人有任何想法如何可以工作? HP Exstream如何读取这个不执行的代码?

+0

首先,代码(就像你写的那样)有一个语法错误(最后一个逗号)。其次,你怎么知道它正在运行?据推测,其余的代码可能会产生一个“NULL”值的行。 – 2014-11-04 20:32:08

+0

逗号只是一个剩余的(不想让每个人都读完所有记录)我们知道HP正在阅读它,因为如果结果查询中的所有列都是而不是在零位。 – Limey 2014-11-04 20:51:59

回答

0

我不知道这是写在哪个代码库,但我认为它在对话脚本中。由于exstream引擎基于C++,因此我的第一个问题是IF语句的语法。

如果C中的1 = 0与IF 1 == 0不一样。第一个基于将值为1的实例成功更改为值为1的实例来确定语句的真实性零。因此它永远是真的。后者实际上比较了两个值,这显然将是错误的。

不知道更多关于这种情况,我会先看看。