有几个问题:
- 您需要在游标定义之后(即在查询之后)使用分号。
- 您不能同时使用
bookCursor
游标的名称和获取的记录的名称。(我注意到您的代码中有一部分bookCursorRec
用于后者,因此我将继续讨论。) - 在
fetch
需求获取 到 的东西,这是进入bookCursorRec
。 - 呼叫到后,您需要使用分号
dbms_output.put_line
。 - 您的查询似乎有误;看起来两个联接都是交叉联接。
放在一起,并稍微调整格式和结构,使它更像“惯用的” PL / SQL:
DECLARE CURSOR bookcursor IS SELECt btname, isbn, pubname, datedestroyed FROM booktitle bt JOIN publisher p ON bt.pid = p.id -- this is just a guess JOIN bookcopy bc ON bt.bcid = bc.id -- this is just a guess WHERe datedestroyed IS NULL ; bookcursorrec bookcursor%ROWTYPE;BEGIN OPEN bookcursor; LOOP FETCH bookcursor INTO bookcursorrec; EXIT WHEN bookcursor%NOTFOUND; dbms_output.put_line( 'ISBN: ' ||bookcursorrec.isbn || ' - Book Name: ' || bookcursorrec.btname || ' - Publisher: ' || bookcursorrec.pubname ); END LOOP; CLOSE bookcursor;END;/
顺便说一句,甲骨文标识符大多是区分大小写(因为他们是隐式转换为大写,除非你在双引号包起来),所以通常人们会用类似的标识符
book_cursor_rec和
date_destroyed,而不是
bookCursorRec(=
bookcursorrec)和
dateDestroyed(=
datedestroyed)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)