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?如果确实如此,那么我可以选择哪种方法来实现预期效果呢?
感谢。
答案 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
但是,说真的,你需要找到一种方法来测试你工作环境的发展。
我不羡慕你工作的地方有多难。我希望这对你有用。