2014-11-04 84 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的實例來確定語句的真實性零。因此它永遠是真的。後者實際上比較了兩個值,這顯然將是錯誤的。

不知道更多關於這種情況,我會先看看。