Stored procedures 嗨,我的任务是创建一个程序来打印客户机’;It’一周的时间表是什么
嗨,我的任务是打印客户一周的时间表。我做这个程序是为了打印客户时间表。我想不出我犯了什么错误,有人能帮我打印一个客户一周的时间表吗Stored procedures 嗨,我的任务是创建一个程序来打印客户机’;It’一周的时间表是什么,stored-procedures,plsql,Stored Procedures,Plsql,嗨,我的任务是打印客户一周的时间表。我做这个程序是为了打印客户时间表。我想不出我犯了什么错误,有人能帮我打印一个客户一周的时间表吗 *Name Null Type ------------- -------- ------------ CUSTOMER_T_ID NOT NULL NUMBER(38) C_DATE NOT NULL TIMESTAMP(6) TIMETABLE_ID NOT NULL NUMBER(38)
*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 */
您缺少过程语句的结尾 结束打印程序: 并且不能在pl/sql过程中使用提示符。它需要更像
Create or replace your procedure.... as
Begin
....
End;
/
BEGIN
PrintTimeTable_Procedure;
END;
还不完全清楚您是从SQLPlus还是从和IDE运行此过程?您错过了过程的结尾,并且没有为记录字段使用正确的名称。您不需要在字段名中包含表别名(即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;
/