while循环用于Oracle中的sql语句

时间:2015-06-05 23:34:08

标签: oracle

我试图遍历一组视图并收集视图名称和计数。我创建了一个新表并添加了一个ID列。我想循环浏览我的sql语句并检索ID<< 10.

这是我用来设置我的id列的创建表语句;

create table  View_Table AS 
select VIEW_NAME,
row_number() over ( order by VIEW_NAME ) as id
from all_views;

- 我尝试遍历sql语句

DECLARE
     x NUMBER := 0;
    BEGIN
      LOOP
        select view_name,count(*) from VIEW_TABLE where id = x group by VIEW_NAME;
        x := x + 1;  
      EXIT WHEN x > 10;
     END LOOP;
   END;

---以下是我收到的错误消息:

在命令行中从第13行开始出错 -

DECLARE
     x NUMBER := 0;
    BEGIN
      LOOP
        select view_name,count(*) from VIEW_TABLE where id = x group by VIEW_NAME;
        x := x + 1;  
      EXIT WHEN x > 10;
     END LOOP;
   END;
Error report -
ORA-06550: line 5, column 9:
PLS-00428: an INTO clause is expected in this SELECT statement
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果在PL / SQL块中有select语句,则必须提供存储结果的位置。试试这个。

DECLARE
     x NUMBER := 0;
     cnt number;
     vname varchar2(100);

    BEGIN
      LOOP
        select view_name,count(*) 
        into vname, cnt
        from VIEW_TABLE where id = x group by VIEW_NAME;
        x := x + 1;  
      EXIT WHEN x > 10;
     END LOOP;
   END;

这只是一次学习练习吗?因为你没有对结果做任何事情。我还建议您阅读Steve Feuerstein's articles。那里有很多好东西。