我试图遍历一组视图并收集视图名称和计数。我创建了一个新表并添加了一个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:
任何帮助都将不胜感激。
答案 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。那里有很多好东西。