如何多次运行查询?

时间:2015-01-05 15:15:43

标签: sql oracle plsql

我有一个简单的查询,我希望运行未知次数(取决于表中的给定值)

select * 
   from lotTable
   where lot = '1111'

我希望运行该查询X时间,具体取决于名为' code'在同一批次。 我尝试在PL / SQL中使用失败的for循环。

这是我试图运行的代码:

DECLARE Counter INT
DECLARE MaxC INT
    SET Counter = 0
    SET MaxC = (select code from lotTable where lot='1111')
    while MaxC => Counter
      BEGIN
        SET Counter += 1
        select * 
         from lotTable
         where lot = '1111'
      END

这是错误 error

1 个答案:

答案 0 :(得分:2)

如果您只想让表格中的特定行重复code次,那么您可以使用hierarchical query

select * 
from (
  select *
  from lotTable
  where lot = 1111
)
connect by level <= code;

内部查询标识您感兴趣的单行,外部查询使用connect by level结构重复该行。

SQL Fiddle demo

没有内部查询connect by有点混淆(参见this example with incorrect results);有解决方法,你也可以使用递归子查询因子来避免这种情况,但这更简单。