Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Oracle:在分区/组及其子分区/组上循环_Oracle_Loops_Plsql_Partitioning - Fatal编程技术网

Oracle:在分区/组及其子分区/组上循环

Oracle:在分区/组及其子分区/组上循环,oracle,loops,plsql,partitioning,Oracle,Loops,Plsql,Partitioning,我想知道是否有可能在PL/SQL中实现以下步骤 请注意,我使用单词partition是指将具有特定条件的行放在一起,因为a我希望避免使用单词group,因为它将SQL中的行组合在一起,b我到目前为止的研究使我认为partition BY子句可能就是我想要的: 1. Select rows based on a long query with many joins, partition the results based on a certain column value of type LON

我想知道是否有可能在PL/SQL中实现以下步骤

请注意,我使用单词partition是指将具有特定条件的行放在一起,因为a我希望避免使用单词group,因为它将SQL中的行组合在一起,b我到目前为止的研究使我认为partition BY子句可能就是我想要的:

1. Select rows based on a long query with many joins, 
partition the results based on a certain column value of type LONG.

2. Loop through each row of a partition and partition again, 
based on another column of type VARCHAR. 
Do that for every partition. 

3. Loop through each row of the resulting sub-partition, compare multiple columns 
with predefined values, set a boolean column to true or false based on the result. 
Do that for every sub-partition.

对于我来说,用一种普通的编程语言,比如Java,做这件事真的很容易。但是我可以在PL/SQL中这样做吗?如果是这样的话,什么是好方法?

您好,正如您所说的,这是一个长时间运行的查询,深层分区将对性能产生很大影响。是的,这是可以实现的,但我不推荐。您需要提供一些示例数据、结果示例以及您尝试过的示例代码。然而,如果性能目前是一个问题,那么添加更多的PL/SQL可能不会有帮助。您可以完全用SQL完成这项工作,这将是您最快的选择。您好,谢谢您的帮助。我的意思是复杂的有很多and和OR。性能根本不是问题,我也不担心。我想知道的是,我是否可以用SQL编写代码。稍后我将尝试发布一些示例数据。据我所知,您希望根据其他列的值设置布尔列的值。我不明白你想用分区实现什么。您能解释一下为什么要对行进行分组/分区吗?为什么不逐行遍历表并设置布尔列?这可能比使用SQL快得多,但至少与根据某些列值在表中循环一样快。