我需要查询存储过程,并根据该过程的结果集需要在条件语句中做出决定
例如,我有一个存储过程“Main_SP”
现在,如果“Main_SP”的结果为“null”,则结果应为“Tweety”,但如果结果集不为null,则应检索结果集,
怎么做?
我试过跟随和其他一些但没有工作。
SELECT
case Main_SP('MyVariable')
when 'null'
then 'Tweety' end
FROM SYSIBM.SYSDUMMY1 WITH UR
SELECT
case Main_SP('MyVariable')
when null
then 'Tweety' end
FROM SYSIBM.SYSDUMMY1 WITH UR
条件失败,在第一个命令中,即使它是'null',它也不会打印'Tweety'。
并且在使用秒时,获取'Null'的错误在上下文中无效。
答案 0 :(得分:0)
我不相信你可以这样使用存储过程。
存储过程可以以两种方式返回数据
您没有使用选项2,我认为结果集不会为NULL。可能没有记录,但RS本身不是NULL。此外,根据我在手册中看到的,从DB2中另一个存储过程中的存储过程处理RS需要您声明一个分配结果集定位器。但我从来没有这样做过。
如果您的过程返回单个值或null,则可以通过将其定义为具有返回值的函数来获得更好的服务。然后你的代码就是:
SELECT
COALESCE(Main_Fnc('MyVariable'),'Tweety')
FROM
SYSIBM.SYSDUMMY1 WITH UR
答案 1 :(得分:0)
您无法将存储过程作为SQL全查询的一部分进行调用;您需要让调用存储过程的客户端处理此逻辑。如果必须在服务器上执行此操作,请实现一个新的存储过程,该过程本身调用Main_SP
并包含解释结果的逻辑。