簡體   English   中英

過程中的PL / SQL變量參數

[英]PL/SQL Variable parameters in procedure

我需要創建一個過程,它允許用戶為一個訂單輸入信息(這是下面),但也為亞目數為n(其中2≤Ñ≥10)。 我如何將其整合到我已經擁有的程序中? 我正在使用SQLPlus。 任何幫助或建議,將不勝感激。 :)

CREATE OR REPLACE PROCEDURE VIEW_ORDER(ORDERS IN CHAR)
AS

CURSOR ORDER_CUR IS

  SELECT * FROM SUBORDERS
  WHERE ORDER_NO = ORDERS;

BEGIN
    FOR O_REC IN ORDER_CUR
    LOOP

  DBMS_OUTPUT.PUT_LINE('Product Code: ' || O_REC.prod_id 
  || ' Order: ' || O_REC.order_no 
  || ' Suborder: ' || O_REC.suborder_no
  || ' Quantity: ' || O_REC.quantity);
  END LOOP;

EXCEPTION
WHEN no_data_found THEN 
DBMS_OUTPUT.PUT_LINE ('Product number does not exist'); 
WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE ('Operation failed  ' || 'SQLCODE: ' || SQLCODE); 
ROLLBACK;
END; 
/

您可以將sqlplus命令ACCEPT用於輸入,並進行另一個循環以獲取n個子順序。

如果我沒有誤解您的問題,它將是這樣的:

-- You have to create the input outside the procedure
accept n char prompt 'Please enter n suborders: '

CREATE OR REPLACE PROCEDURE VIEW_ORDER(ORDERS IN CHAR)
AS

  CURSOR ORDER_CUR IS

    SELECT * FROM SUBORDERS
    WHERE ORDER_NO = ORDERS;

BEGIN
  FOR O_REC IN ORDER_CUR
  LOOP

    -- Here we check if n<=2
    IF n>=2 THEN

      -- here if n<=10
      WHILE n<=10
      LOOP
       DBMS_OUTPUT.PUT_LINE('Product Code: ' || O_REC.prod_id 
        || ' Order: ' || O_REC.order_no 
        || ' Suborder: ' || O_REC.suborder_no
        || ' Quantity: ' || O_REC.quantity);
      END LOOP;
     END IF;
    END LOOP;


EXCEPTION
WHEN no_data_found THEN 
  DBMS_OUTPUT.PUT_LINE ('Product number does not exist'); 
  WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE ('Operation failed  ' || 'SQLCODE: ' 
  || 
  SQLCODE); 
  ROLLBACK;
END; 
/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM