編輯:我有很多格式化此代碼出於某種原因的麻煩請耐心與我。另外我知道一些代碼丟失。這只是代碼的一部分。連續字符串設置帽長度
我正在模擬每晚運行的批處理負載,以執行一些負載測試。我面臨的問題是,在插入100個左右的數據後,我的自動生成的PK超過列數據長度。如何在不違反獨特約束條件的情況下封閉我的字符串,同時爲每張表格插入大約20,000行。我的目標是擺脫由於需求變化而產生的隨機字符串。以下是我遇到的一部分代碼。
declare
l_cnt integer := 0;
t_cnt integer := 0;
c_cnt integer := 0;
f_cnt integer := 0;
i integer := 0;
TYPE T_EMPL_NO IS TABLE OF VARCHAR2(1000) INDEX BY BINARY_INTEGER;
TAB_EMPL_NO T_EMPL_NO;
TAB_SEC_PK T_EMPL_NO;
TAB_THR_PK T_EMPL_NO;
TAB_FTH_PK T_EMPL_NO;
begin
dbms_output.put_line('START LOAD TEST');
LOOP
i := i + 1;
TAB_EMPL_NO(l_cnt) := 'JB'||i;
TAB_SEC_PK(t_cnt) := dbms_random.string('L',6);
TAB_THR_PK(c_cnt) := dbms_random.string('L',1);
TAB_FTH_PK(f_cnt) := dbms_random.string('L',20);
Insert into AOMS.PARTS_MONTH_CLOSE(
NAMES OF COLUMNS HERE
) Values (
TAB_EMPL_NO(l_cnt),
TAB_SEC_PK(t_cnt),
TAB_THR_PK(c_cnt),
TAB_FTH_PK(f_cnt)
);
l_cnt := l_cnt + SQL%ROWCOUNT;
EXIT WHEN l_cnt = 100; -- change to record count 22k
END LOOP;
dbms_output.put_line('P2ACCTMO :Rows inserted: ' || l_cnt);
END;
/
作爲獎勵,如果我想的腳本來運行一個小時,但不超過一個循環我該怎麼做時插入記錄的金額是多少?非常感謝您的幫助。
這是一種很難回答的問題,因爲我們不知道你的表是什麼樣子,也不知道它裏面有什麼數據,也沒有什麼主鍵值,也不知道當你的插入開始失敗時產生什麼錯誤,並且你發佈的代碼被大量編輯以至於很難說出它可能會做什麼。請編輯您的問題並添加一些額外的解釋性信息。謝謝。 –
我明白了。那麼怎麼樣呢。我可以如何設置一個變量如'x'不大於1000? – Jules
您的代碼似乎並未連接任何字符串(在編輯之前或之後),因此我無法查看問題所在。它似乎也等同於一個簡單的分層查詢:'INSERT INTO AOMS.PARTS_MONTH_CLOSE SELECT'JB'|| LEVEL,dbms_random.string('L',6),dbms_random.string('L',1),dbms_random.string('L',20),... FROM DUAL CONNECT BY LEVEL <= 100;' – MT0