2015-11-10 13 views
0

嗨,我的任務是打印打印一個星期的客戶的時間表。我制定了這個程序來打印客戶的時間表。我無法弄清楚所做的錯誤,有人可以幫我打印一個客戶的一個星期的時間表。嗨,我的任務是創建一個程序來打印一個星期的客戶的時間表

*Name   Null  Type   
------------- -------- ------------ 
CUSTOMER_T_ID NOT NULL NUMBER(38) 
C_DATE  NOT NULL TIMESTAMP(6) 
TIMETABLE_ID NOT NULL NUMBER(38) 
CUSTOMER_ID NOT NULL NUMBER(38) 

Desc Timetable 
Name    Null  Type   
----------------- -------- ------------ 
TIMETABLE_ID  NOT NULL NUMBER(38) 
CLASS_DAY   NOT NULL VARCHAR2(50) 
CLASS_LOCATION NOT NULL VARCHAR2(50) 
CLASS_START_TIME NOT NULL TIMESTAMP(6) 
CLASS_FINISH_TIME NOT NULL TIMESTAMP(6) 
WORKOUT_CLASS_ID NOT NULL NUMBER(38) 
TRAINER_ID  NOT NULL NUMBER(38) 

Desc Customers 
Name    Null  Type   
---------------- -------- ------------- 
CUSTOMER_ID  NOT NULL NUMBER(38)  
FIRST_NAME  NOT NULL VARCHAR2(50) 
LAST_NAME  NOT NULL VARCHAR2(50) 
AGE    NOT NULL NUMBER(38)  
ADDRESS   NOT NULL VARCHAR2(100) 
CITY    NOT NULL VARCHAR2(50) 
MOBILE_PHONE  NOT NULL NUMBER(10)  
EMAIL      VARCHAR2(50) 
PICTURE     BFILE()  
CUSTOMER_TYPE_ID NOT NULL NUMBER(5)  
*/ 


    Create or Replace Procedure PrintTimeTable_Procedure 
    (T_Customer_id number Default null) 
    As 
    Begin 
    FOR aRow IN (Select Cu.Customer_id,Cu.First_Name,CT.CUSTOMER_T_ID, 
    CT.C_DATE, 
    CT.TIMETABLE_ID, 
    CT.CUSTOMER_ID, 
    T.TIMETABLE_ID, 
    T.CLASS_DAY, 
    T.CLASS_LOCATION, 
    T.CLASS_START_TIME, 
    T.CLASS_FINISH_TIME, 
    From Customers Cu, customer_timetable CT, TimeTable T 
    Where C.Customer_id = CT.CUSTOMER_ID 
    And CT.TIMETABLE_ID = T.TIMETABLE_ID 
    and CT.Customer_id = T_Customer_id 

    LOOP 
    DBMS_OUTPUT.PUT_LINE('Customer ID: ' || aRow.Cu.EMPLOYEE_ID); 
    DBMS_OUTPUT.PUT_LINE('NAME: ' || aRow.Cu.FIRST_NAME); 
    DBMS_OUTPUT.PUT_LINE('DATE: ' || aRow.CT.C_DATE); 
    DBMS_OUTPUT.PUT_LINE('DAY: ' || aRow.T.Class_Day); 
    DBMS_OUTPUT.PUT_LINE('CLASS LOCATION: ' || aRow.T.CLASS_LOCATION); 
    DBMS_OUTPUT.PUT_LINE('START TIME: ' || aRow.T.CLASS_START_TIME); 
    DBMS_OUTPUT.PUT_LINE('FINISH TIME: ' || aRow.T.CLASS_FINISH_TIME); 
    END LOOP; 


    PROMPT PrintTimeTable_Procedure Procedure 

    Execute PrintTimeTable_Procedure; 




/*C:\Users\venkatesh\AppData\Roaming\SQL Developer\VENKYPROsql 
Error(12,14): PL/SQL: SQL Statement ignored 
Error(20,22): PL/SQL: ORA-00936: missing expression 
Error(27,66): PLS-00103: Encountered the symbol ";" when expecting one of the following:  loop 
Error(34,12): PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:  end not pragma final instantiable order overriding static member constructor map */ 

回答

0

你缺少的程序語句

END PrintTimeTable_Procedure結束:

,你不能使用PL/SQL過程中提示。它需要更像

Create or replace your procedure.... as 
Begin 
.... 
End; 
/
BEGIN 
PrintTimeTable_Procedure; 
END; 

這是不完全清楚,如果你是從SQLPlus或從和IDE運行此?

0

您錯過了過程的結束,並且您沒有爲記錄字段使用正確的名稱。您不需要在字段名稱中包含表別名(即aRow.Cu.FIRST_NAME錯誤,該字段名爲FIRST_NAME,aRow.FIRST_NAME)。此外,我看不到任何名爲EMPLOYEE_ID的字段

CREATE OR REPLACE PROCEDURE PrintTimeTable_Procedure (T_Customer_id NUMBER DEFAULT NULL) AS 
BEGIN 
    FOR aRow IN (SELECT Cu.Customer_id, 
         Cu.First_Name, 
         CT.CUSTOMER_T_ID, 
         CT.C_DATE, 
         CT.TIMETABLE_ID, 
         CT.CUSTOMER_ID, 
         T.TIMETABLE_ID, 
         T.CLASS_DAY, 
         T.CLASS_LOCATION, 
         T.CLASS_START_TIME, 
         T.CLASS_FINISH_TIME, 
       FROM Customers Cu, customer_timetable CT, TimeTable T 
       WHERE C.Customer_id = CT.CUSTOMER_ID 
       AND CT.TIMETABLE_ID = T.TIMETABLE_ID 
       AND CT.Customer_id = T_Customer_id) LOOP 
    DBMS_OUTPUT.PUT_LINE('Customer ID: ' || aRow.CUSTOMER_ID); 
    DBMS_OUTPUT.PUT_LINE('NAME: ' || aRow.FIRST_NAME); 
    DBMS_OUTPUT.PUT_LINE('DATE: ' || aRow.C_DATE); 
    DBMS_OUTPUT.PUT_LINE('DAY: ' || aRow.Class_Day); 
    DBMS_OUTPUT.PUT_LINE('CLASS LOCATION: ' || aRow.CLASS_LOCATION); 
    DBMS_OUTPUT.PUT_LINE('START TIME: ' || aRow.CLASS_START_TIME); 
    DBMS_OUTPUT.PUT_LINE('FINISH TIME: ' || aRow.CLASS_FINISH_TIME); 
    END LOOP; 
END; 
/

PROMPT PrintTimeTable_Procedure Procedure 
BEGIN 
    PrintTimeTable_Procedure; 
END; 
/
相關問題