嘿,任何人都可以帮助解决此错误:
9/10 PLS-00428: an INTO clause is expected in this SELECT statement
当尝试根据单个参数打印出详细信息时,会出现这种情况。这是我一直在使用的代码
CREATE OR REPLACE PROCEDURE PRINT_ACTOR_QUOTES (ID_actor CHAR)
AS
first_name CHAR(30);
last_name CHAR(30);
title CHAR(40);
year NUMBER;
role CHAR(40);
quote CHAR(255);
CURSOR print_cursor IS
SELECT a.actorID, a.firstname, a.lastname, m.title as title, m.year as year ,
r.rolename as role1 , q.quotechar as quote1 FROM movie m, role r, quote q, rolequote
rq, actor a WHERE
a.actorID = r.actorID AND
m.movieID = r.movieID AND
rq.quoteID = q.quoteID AND
rq.roleID = r.roleID;
BEGIN
FOR row IN print_cursor LOOP
SELECT AQ.QUOTES, A.FIRSTNAME, A.LASTNAME
FROM ACTOR_QUOTES AQ, ACTOR A
Where row.actorID = ID_actor;
END LOOP;
END PRINT_ACTOR_QUOTES ;
/
我假设相关错误是
PLS-00428:此 SELECT 语句中应包含 INTO 子句
(而不是您在问题标题中提到的那个)。
问题是 FOR 循环中的 SELECT 语句。在PL/SQL中,您不能只选择数据而不对数据执行任何操作。因此,您需要一个INTO语句将检索到的数据存储在PL/SQL变量中:
SELECT AQ.QUOTES, A.FIRSTNAME, A.LASTNAME
INTO quote, first_name, last_name
FROM ACTOR_QUOTES AQ, ACTOR A
Where row.actorID = ID_actor;
然后我可以发现几个其他问题:
- SELECT 语句似乎是一个完整的外部连接,很少是您想要的。
- 如果带有 INTO 子句的 SELECT 语句返回多行,则该语句将失败。
- 如果您在每次迭代时覆盖局部变量并且不对它们执行任何操作,FOR 循环的目的是什么。