1. 程式人生 > >pl/sql中儲存過程測試

pl/sql中儲存過程測試

pl/sql中儲存過程含有自定義陣列的引數:

測試debug模式:

例子 : 儲存過程 PRE_BOOKTICKET_SEND 為 : 

CREATE OR REPLACE PROCEDURE "PRE_BOOKTICKET_SEND"(TICKETID VARCHAR2,
                                                  PHONES   tab_array,
                                                  nums     ARRAY_NUMBER,
                                                  messages ARRAY_LONG_VARCHARS) is …………

其中 tab_array ,array_number, array_long_varchars 都是自己在資料庫中定義的 type

(array_long_varchars :TE OR REPLACE TYPE "ARRAY_LONG_VARCHARS" AS table OF VARCHAR2(2500))

為了驗證自己編寫得儲存過程 需要將 勾選 add debug information (pl/sql中可以手動新增模式)

然後 Test :

自動生成的SQL語句不完善 ,需要自己補全 

 例 :

declare
  -- Non-scalar parameters require additional processing 
  phones tab_array;
  nums array_number;
  messages array_long_varchars;
begin
  -- Call the procedure
  phones := new tab_array();
  declare
  begin
    for i in 1 .. 1 loop
      phones.extend();
      phones(i) := '13913884772';
    end loop;
  end;
  
  nums := new array_number();
  declare 
  begin
    for i in 1 .. 1 loop
      nums.extend();
      nums(i) := 2;
    end loop;
  end;
  
  messages := new array_long_varchars();
  declare
  begin
    for i in 1 .. 1 loop
      messages.extend();
      messages(i) := '收到資訊';
    end loop;
  end;
  
  pre_bookticket_send(ticketid => :ticketid,
                      phones => phones,
                      nums => nums,
                      messages => messages);
end;

關鍵點是  extended