如果带有WHERE的SELECT“字符串”INTO var1没有返回任何行,那么该字符串是否仍会被移入var1?

时间:2011-10-24 15:47:06

标签: sql variables select

MOVE "Y"   TO :LKG-RETURN
EXEC SQL                                
    SELECT "N"                          
    INTO :LKG-RETURN              
    FROM SOME_TABLE                      
    WHERE SOME_COLUMN = :SOME_VAR  
END-EXEC.    

这是SQLCOBOL程序的一部分,我需要检查数据库中的某个变量,以查看主程序是否必须运行作业。默认情况下,我将“Y”放入返回值,但如果选择返回行,则不能运行作业,所以我将“N”放入其中。我的问题是:

如果选择返回0行(这意味着必须运行作业),它是否仍然将“N”移动到:LKG-RETURN?如果确实如此,那么我可以选择哪种方法来实现预期效果呢?

感谢。

1 个答案:

答案 0 :(得分:1)

正常的SQL行为是不返回该值。但我从未使用过SQLCOBOL来测试这个。每当我有最迟钝的犹豫时,我都会测试。

如果没有测试能力,这将始终返回一个值......

SELECT COUNT(*)
INTO :LKG-RETURN              
FROM SOME_TABLE                      
WHERE SOME_COLUMN = :SOME_VAR  

-- 0 = no hits

或者可能......

SELECT
  CASE WHEN EXISTS (SELECT * FROM SOME_TABLE WHERE SOME_COLUMN = :SOME_VAR)
       THEN 'Y' ELSE 'N' END

但是,说真的,你需要找到一种方法来测试你工作环境的发展。

我不羡慕你工作的地方有多难。我希望这对你有用。