【问题标题】:sql not properly ended for three tables join三张表连接的sql没有正确结束
【发布时间】:2019-04-15 07:17:59
【问题描述】:

连接三个表查询的sql错误enter code hereing common value to get reserved books by a student using cursor for iteration

我试图以相反的顺序加入他们

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;
           /

我希望列出用户详细信息和 用户保留的书籍列表

【问题讨论】:

  • Oracle 不使用AS 作为表别名(尽管它确实接受它作为列别名)。

标签: oracle join plsql database-cursor


【解决方案1】:

尝试像这样定义光标:

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;
/

【讨论】:

  • @hol 代码产生类似这样的错误 PL/SQL:语句被忽略 29/44 PLS-00302:组件“M”必须声明 31/2 PL/SQL:语句被忽略 31/42 PLS -00302:必须声明组件'M' 32/2 PL/SQL:忽略语句 32/49 PLS-00302:必须声明组件'M' 33/2 PL/SQL:忽略语句至于最后一端,它是分开的成员体定义。感谢您的帮助
  • @yos 表名或列名有错别字吗?
  • 创建或替换类型 book_typ 作为对象(isbn varchar(20),title varchar(50),date_of_publication 日期,作者 fullNames_tab,成员程序目录(bookobj IN OUT NOCOPY book_typ),成员程序 check_out(isb varchar2,membid varchar2), 成员程序 display_check_out(id varchar2) )
  • CREATE TABLE bookstable of book_typ(isbn primary key not null) NESTED TABLE authors STORE AS authors_nt; / 创建或替换类型 books_nt 作为 book_typ 的 TABLE; /
  • CREATE OR REPLACE TYPE member_typ As object( member_id varchar2(10), full_name fullName, gender varchar2(8), phone tele_type, CONSTRUCTOR FUNCTION member_typ RETURN SELF AS RESULT, MEMBER FUNCTION show RETURN VARCHAR2, MEMBER PROCEDURE reg_member(mem IN OUT NOCOPY member_typ) ) /
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
相关资源
最近更新 更多