Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将条件合并到一个位置_Sql_Database_Oracle_Plsql_Cursor - Fatal编程技术网

Sql 将条件合并到一个位置

Sql 将条件合并到一个位置,sql,database,oracle,plsql,cursor,Sql,Database,Oracle,Plsql,Cursor,有两个函数:一个返回具有特定任务的工作人员的记录,另一个返回特定工作人员的任务。这两个函数在WHERE子句中具有相同条件的游标 我的问题是,我如何在一个地方定义这些条件?那我的密码就不会坏了 提前谢谢 注:我不喜欢使用REF游标,因为它们不可靠。我认为使用DRY(不要重复)的一个明智的经验法则是三角测量:如果在三个地方存在相同的逻辑,那么值得努力将其提取到自己的模块中。但如果它只存在于两个地方,那就不用麻烦了 然而,你并不是在重复你自己,是吗?您有两个不同的查询返回两个不同的结果集(一个是WOR

有两个函数:一个返回具有特定任务的工作人员的记录,另一个返回特定工作人员的任务。这两个函数在WHERE子句中具有相同条件的游标

我的问题是,我如何在一个地方定义这些条件?那我的密码就不会坏了

提前谢谢


注:我不喜欢使用REF游标,因为它们不可靠。

我认为使用
DRY
(不要重复)的一个明智的经验法则是三角测量:如果在三个地方存在相同的逻辑,那么值得努力将其提取到自己的模块中。但如果它只存在于两个地方,那就不用麻烦了

然而,你并不是在重复你自己,是吗?您有两个不同的查询返回两个不同的结果集(一个是WORKERS,另一个是TASKS),它们恰好有一些WHERE子句的共同点。那不是适当的重复


如果您试图在一个实例中根除所有内容,其中两行代码执行相同的操作,那么最终将得到一个非常不可读且无法维护的程序。请记住,DRY是由称自己为实用主义程序员的人制定的,他们有一个很好的理由:明智地应用原则并理解为什么要这样做,而不是盲目地遵循教条。

针对您对REF游标的保留,为什么您认为它们不可靠?我从来没有和他们有过任何问题。使用动态SQL来填充ref游标可能会让您感到悲伤。但这是一种试图消除假想重复的功能,与使用游标变量本身无关。

投票结束时,您需要提供更多细节,我们不是读心术。请你给我们看一下这两种功能的代码好吗?@Johan-你不必是读心术的人就能理解他们的意思,尽管这显然不是以英语为母语的人的工作。