首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 預存程序回傳陣列的方法

     編輯:Oracle 資料庫基礎

步驟

1. 建立套件定義陣列型別

CREATE OR REPLACE PACKAGE TEST IS
  TYPE FILENAME_ARRAY IS TABLE OF VARCHAR2(1);
  FILENAME FILENAME_ARRAY;
END TEST;

2. 建立預存程序輸出陣列

CREATE OR REPLACE PROCEDURE TEST_ARRAY(V_CFJG OUT TEST.FILENAME_ARRAY) IS
BEGIN
  DECLARE
    I NUMBER;
    D_CFJG DIC_CFJG%ROWTYPE;
    CURSOR C1 IS SELECT * FROM DIC_CFJG;
  BEGIN
    I := 0;
    V_CFJG := TEST.FILENAME_ARRAY();  -- 陣列初始化
    OPEN C1;
    LOOP
      FETCH C1 INTO D_CFJG;
      EXIT WHEN C1%NOTFOUND;
      I := I + 1;
      V_CFJG.EXTEND;
      V_CFJG(V_CFJG.COUNT) := D_CFJG.DM;
      DBMS_OUTPUT.PUT_LINE(V_CFJG(V_CFJG.COUNT));  -- 測試輸出
    END LOOP;
  EXCEPTION
    WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS');
    WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLERRM);
  END;
END TEST_ARRAY;

說明

  • 在套件中定義 TABLE OF 集合型別,預存程序參數使用該型別。
  • 呼叫前需初始化陣列 V_CFJG := TEST.FILENAME_ARRAY()。
  • 使用 EXTEND 擴展陣列大小,按索引賦值。
  • 適用於需回傳多筆同型別資料的情境。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved