Plsql 程序错误ORA-00918:列定义不明确

Plsql 程序错误ORA-00918:列定义不明确,plsql,oracle10g,ora-00918,Plsql,Oracle10g,Ora 00918,嘿,有人能帮我解决这个错误吗: 9/10 PLS-00428:此SELECT语句中应包含INTO子句 当尝试基于单个参数打印详细信息时,会出现此问题。这是我一直在使用的代码 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

嘿,有人能帮我解决这个错误吗:

9/10 PLS-00428:此SELECT语句中应包含INTO子句

当尝试基于单个参数打印详细信息时,会出现此问题。这是我一直在使用的代码

 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循环的目的是什么

请建议您如何使用此过程和游标循环。我希望它打印actor表中的行firstname和lastname,以及嵌套表actor“QUOTES actor”中的标题、年份、角色和引号。actor“QUOTES和actor表之间的关系是什么。请提及字段。此语句中的ACTOR_引号和ACTOR表缺少联接条件。我现在有错误PL/SQL:ORA-00932:不一致的数据类型:预期数量获得myusername.aq_ntOn在哪一行获得错误?这可能是
ID\u actor
(字符类型)和
row.actorID
(数字类型?)之间的比较。