【发布时间】:2014-10-11 07:34:48
【问题描述】:
在我的过程中,我试图合并一个 case 块来在 where 子句中执行条件检查。你能帮帮我吗?
下面是我的程序主体,它工作正常..
FROM TABLE_A
WHERE name = p_name
AND address = p_address
AND state = p_state
AND ((p_county IS NULL AND default_zone = 'Y') OR (county = p_county)) ;
现在我想拆分最后一段。 我总是会得到一个县列,所以作为标准方式,下面的块将起作用,这是代码中必须有的(这个逻辑)
WHERE name = p_name
AND address = p_address
AND state = p_state
AND county = p_county
现在假设,我们在程序调用期间得到的县不可用,所以在这种情况下,DB 不会返回任何数据,会出现“NO_DATA_FOUND”错误。现在如果出现这个错误,我必须执行下面的块..
WHERE name = p_name
AND address = p_address
AND state = p_state
AND default_zone = 'Y'
最简单的方法,我应该使用该程序两次并在异常时调用第二个块,但这可能程序非常庞大并且看起来也不好看..有没有一种方法可以用更简单的方式编写..
我正在尝试使用 case 块来获取此代码,但它对我不起作用.. 请建议
【问题讨论】:
-
您要解决的问题是什么?您的原始代码看起来不错。而且,“案例块”是什么意思? (我只了解 Oracle PL/SQL 方面的概念,但您的标签和代码都不一定暗示 Oracle。)
-
@GordonLinoff 很抱歉造成混淆。我现在已经编辑了我的帖子。请检查并帮助我。
-
那么,这是 Oracle、SQL Server、PostgreSQL 还是什么?
-
有人可以建议我一个简单的选项来实现它..
标签: sql stored-procedures procedure