光标和PLSQL的语法问题

时间:2014-05-10 03:50:46

标签: select plsql cursor

我正在尝试运行一个检索customerid,quantity,sale_date和product的plsql块。

它提供以下错误消息

  

END;   错误报告 -   ORA-06550:第5行,第31栏:   PL / SQL:ORA-00911:无效字符   ORA-06550:第3行第8列:   PL / SQL:忽略SQL语句   06550. 00000 - “行%s,列%s:\ n%s”   *原因:通常是PL / SQL编译错误。   *操作:

这是我的代码所有帮助将不胜感激。

SET SERVEROUTPUT ON
DECLARE
    CURSOR CUR_HISTORY IS 
         SELECT CUST#, SALE_DATE, QTY, DESCRIPTION
         FROM SALES S, PRODUCT P
       WHERE CUST# = &CUST#
       AND S.PRODUCT# = P.PRODUCT#;       

    TYPE TYPE_HISTORY IS RECORD (
       CID      SALES.CUST#%TYPE,
       SDT  SALES.SALE_DATE%TYPE,
       QTY  SALES.QTY%TYPE,
       PNAME    PRODUCT.DESCRIPTION%TYPE);  
    REC_HISTORY     TYPE_HISTORY;

BEGIN
    OPEN CUR_HISTORY;
         LOOP 
         FETCH CUR_HISTORY INTO REC_HISTORY;
         EXIT WHEN CUR_HISTORY%NOTFOUND;
   DBMS_OUTPUT.PUT_LINE('CUSTOMER ID: '   
          ||REC_HISTORY.CID|| ' ORDER DATE: ' || 
          REC_HISTORY.ODT|| '   QTY: ' 
          ||REC_HISTORY.QTY|| 'PRODUCT: ' 
          ||REC_HISTORY.PNAME);   
       END LOOP;
    CLOSE CUR_HISTORY;     
END;

1 个答案:

答案 0 :(得分:0)

在你的put_line中你有

... 
ORDER DATE: ' || REC_HISTORY.ODT  
...

您的记录类型TYPE_HISTORY中没有 ODT 字段,而是 SDT 。因此,我认为您的记录类型声明中存在拼写错误。