0

所以我有一个其他人编写的过程,其代码如下:

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 exstream 中,在 SQL Server 中,proc 会按预期运行)。

任何人都知道这是如何工作的吗?HP Exstream 怎么会读取这个非执行代码?

4

1 回答 1

0

我不知道这是用什么代码库编写的,但我认为它在 Dialogue 脚本中。由于 exstream 引擎基于 C++,我的第一个问题是关于 IF 语句的语法。

C中的IF 1 = 0和IF 1 == 0是不一样的。第一个判断语句的真假是根据一个值为1的实例是否成功地变为一个值为0的实例。因此它永远是真的。后者实际上比较了两个值,这显然总是错误的。

在不了解情况的情况下,我会先看一下。

于 2015-09-30T20:44:19.183 回答