sql неправильно завершен для трех таблиц соединения - PullRequest
0 голосов
/ 15 апреля 2019

Ошибка sql при соединении трех таблиц для запроса enter code here при использовании общего значения для получения зарезервированных книг студентом, использующим курсор для итерации

Я пытался присоединиться к ним в обратном порядке

MEMBER PROCEDURE display_check_out(id varchar2)

IS
 cursor  curss 
IS 
select * from memberstable  AS m JOIN  reserv AS r  ON m.member_id= r.membs 

JOIN bookstable AS  b ON r.bookid=b.isbn

 where r.membs= id;

begin

 for curs in curss

loop

DBMS_OUTPUT.PUT_LINE('Student Id: '||curs.m.member_id);


 DBMS_OUTPUT.PUT_LINE('  Name: ' || curs.m.full_name||' Gender: '||curs.m.gender);
 DBMS_OUTPUT.PUT_LINE(' Tel:'||'mobile: '||curs.m.telephone.mobile||'office: '|| curs.m.telephone.office);

` FOR j IN 1..curs.b.COUNT LOOP

 DBMS_OUTPUT.PUT_LINE('-------------------CheckedOutBooks--------------------------');

  DBMS_OUTPUT.PUT_LINE('ISBN: '||curs.b.isbn);

           DBMS_OUTPUT.PUT_LINE('Publication Date: 
'||curs.b.date_of_publication);

           FOR k IN 1..curs.b.authors.COUNT LOOP

           DBMS_OUTPUT.PUT_LINE('Authors: '||curs.b.authors(k));
           END LOOP;
           DBMS_OUTPUT.PUT_LINE('Checked out time: '||curs.checkout);
           END LOOP;
           END LOOP;
           END display_check_out;
           end;
           /

Я ожидаю, чтобы перечислить детали пользователя и список книг, зарезервированных пользователем

1 Ответ

0 голосов
/ 15 апреля 2019

Попробуйте определить курсор следующим образом:

CURSOR curss
   IS
      SELECT *
        FROM memberstable m
             JOIN reserv r ON m.member_id = r.membs
             JOIN bookstable b ON r.bookid = b.isbn
       WHERE r.membs = id;

Также, кажется, в конце есть END, который не нужен.

Вместо:

END display_check_out;
end;
/

больше похоже на это:

END display_check_out;
/
...