【发布时间】:2021-12-22 04:46:50
【问题描述】:
我还是 PLSQL 的新手,目前正在使用 TPCH Dataset 进行练习。我已经尝试了一段时间了,但我似乎无法理解它并且可以使用一些建议。数据集的粗略概述 here.
这是我目前的代码
DECLARE
countNationkey number (5);
BEGIN
FOR QRow IN ( SELECT r_name, n_name, s_nationkey, r_regionkey, count(s_nationkey) INTO countNationkey
FROM region, nation, supplier
WHERE r_regionkey = n_regionkey
AND n_nationkey = s_nationkey
GROUP BY r_name, n_name, s_nationkey, r_regionkey
HAVING count(s_nationkey) > 130
ORDER BY r_name )
LOOP
dbms_output.put_line( rpad('R_NAME', 15) || rpad('N_NAME', 15) ||
rpad('COUNT(S_NATIONKEY)', 20) || chr(10) );
dbms_output.put_line('----------------------------------------------------------');
dbms_output.put_line( rpad(QRow.r_name, 15) || rpad(QRow.n_name, 15) || rpad(countNationkey, 15) );
END LOOP;
END;
但是,当我只尝试选择查询时,我得到了一个错误
SELECT r_name, n_name, s_nationkey, r_regionkey, count(s_nationkey) INTO countNationkey
*
ERROR at line 1:
ORA-00905: missing keyword
如果我删除INTO countNationkey,我知道countNationkey 没有任何价值,因此我将得到如下所示的输出。
R_NAME N_NAME COUNT(S_NATIONKEY)
----------------------------------------------------------
ASIA CHINA
R_NAME N_NAME COUNT(S_NATIONKEY)
----------------------------------------------------------
ASIA INDONESIA
R_NAME N_NAME COUNT(S_NATIONKEY)
----------------------------------------------------------
EUROPE GERMANY
R_NAME N_NAME COUNT(S_NATIONKEY)
----------------------------------------------------------
MIDDLE EAST SAUDI ARABIA
这是我想要的预期结果
R_NAME N_NAME COUNT(S_NATIONKEY)
------------------------- ------------------------- ------------------
ASIA INDONESIA 131
ASIA CHINA 145
MIDDLE EAST SAUDI ARABIA 132
EUROPE GERMANY 132
真的需要一些帮助!提前致谢!
【问题讨论】:
标签: sql oracle stored-procedures plsql procedure