2017-11-22 7 views
0

SQL関数の新機能です。
以下のSQL関数のコンパイルエラーが発生しました。
何か不足していますか?でも、手続きのためSQL関数のコンパイルエラー

FUNCTION CANCEL_ORDER(INPUT_ORDER_ID T_ORDER_PLACEMENT.ORDER_ID%TYPE) 
RETURN NUMBER 

as 
ord_id NUMBER; 

BEGIN 

SELECT order_id into ord_id from t_order_placement where ORDER_ID=INPUT_ORDER_ID; 

EXCEPTION 
WHEN NO_DATA_FOUND THEN DBMS_OUT.PUT_LINE('NO_DATA_FOUND'); 
END; 

IF ord_id IS NOT NULL then 
Delete from t_order_details where ORDER_ID=INPUT_ORDER_ID 
Return 1; 
Commit; 
END IF; 

EXCEPTION 
WHEN ord_id IS NULL THEN DBMS_OUT.PUT_LINE('ERROR'); 
END; 

も私はコンパイルエラーに第二Procedurce(PROCEDURE GET_CUSTOMER_DETAILS)で

CREATE OR REPLACE PROCEDURE GET_CUSTOMER_DETAILS(CUSTOMER_ID IN NUMBER, CUSTOMER_DETAILS OUT SYS_REFCURSOR) 
    AS 
    BEGIN 
    OPEN CUSTOMER_DETAILS FOR 
    select C.CUST_ID, C.CUST_NAME, OP.ORDER_ID, SD.STOCK_NAME, OD.QUANTITY from t_customer C, t_order_placement OP, t_order_details OD, t_stock_details SD 
    END GET_CUSTOMER_DETAILS; 
+2

コードは明らかにOracleですので、タグを変更しました。 MySQLを使用している場合は、Oracleとはかなり異なるMySQLスクリプト言語を学んでください。 –

答えて

0

を取得していますです ";" DELETE後にセミコロンが欠落している、BEGINの欠落

CREATE OR REPLACE PROCEDURE GET_CUSTOMER_DETAILS(CUSTOMER_ID IN NUMBER, CUSTOMER_DETAILS OUT SYS_REFCURSOR) 
    AS 
    BEGIN 
    OPEN CUSTOMER_DETAILS FOR 
    select C.CUST_ID, C.CUST_NAME, OP.ORDER_ID, SD.STOCK_NAME, OD.QUANTITY from t_customer C, t_order_placement OP, t_order_details OD, t_stock_details SD; 
    END GET_CUSTOMER_DETAILS; 
0

を逃し、DBMS_OUTDBMS_OUTPUTする必要があり、最後の例外が起こることが信じられないです。オプションON DELETE CASCADEの外部キーの使用を検討してください。

手順中 - SELECTステートメントの後にセミコロンがありません。

function cancel_order(input_order_id t_order_placement.order_id%type) 
    return number as 

    ord_id number; 

begin 

    begin 
     select order_id into ord_id 
      from t_order_placement 
      where order_id = input_order_id; 
    exception when no_data_found then 
     dbms_output.put_line('no_data_found'); 
     return 0; 
    end; 

    delete from t_order_details where order_id = input_order_id; 

    -- commit; -- <-- commit here if needed 

    return 1; 

end; 
関連する問題