在Oralce9i內向給定的表物件內插入實際的行 (轉)
在開發時,經常需要象資料庫表內錄入些測試資料,如果針對每個表物件都建立一個錄入的過程,顯得有些麻煩。這裡給出一個示例程式碼,者給出要插入測試資料的表物件名稱,和待插入的行數後,過程即可產生隨機資料,錄入到表物件內。
/*-------------向給定的表物件內插入實際的行。---------------------------*/
procedure Insert_Rows(p_tablename varchar, p_numrows number)
as
--定義a_tab_columns檢視型別的表物件,用於儲存給定表的欄位的定義資訊
type table_define is table of dba_tab_columns%rowtype index by binary_integer;
td table_define;
i binary_integer;
--定義動態sql查詢的遊標
l_cursor number:= dbms_sql.open_cursor;
l_ignone number;
--動態sql語句字元變數
sqlstr varchar2(1000);
begin
--獲得表的所有欄位的定義資訊
i:=0;
for rec in( * from dba_tab_columns where table_name=upper(p_tablename))
l
i:= i+1;
td(i):= rec;
dbms_output.put_line(td(i).table_name);
end loop;
--組織insert sql語句的欄位字串
sqlstr:='insert into '||td(1).table_name||'(';
for var in 1..i loop
sqlstr:=sqlstr||td(var).column_name;
if(var<>i) then
sqlstr:=sqlstr||',';
end if;
end loop;
--組織insert sql語句的引數字串
sqlstr:=sqlstr||')'||'values(';
for var in 1..i loop
sqlstr:=sqlstr||':'||td(var).column_name;
if(var<>i) then
sqlstr:=sqlstr||',';
end if;
end loop;
sqlstr:=sqlstr||')';
dbms_output.put_line(sqlstr);
--為引數變數賦值
dbms_sql.parse(l_cursor,sqlstr,dbms_sql.native);
for var_rows in 1..p_numrows loop
--填充插入引數的值
for var in 1..i loop
if td(var).data_type='VARCHAR2' then
dbms_sql.bind_variable(l_cursor,':'||td(var).column_name,dbms_ran.string('A',td(var).data_length));
elsif td(var).data_type='NUMBER' then
dbms_sql.bind_variable(l_cursor,':'||td(var).column_name,
round(dbms_random.value*power(10,td(var).data_precision-td(var).data_scale),td(var).data_scale));
else
dbms_sql.bind_variable(l_cursor,':'||td(var).column_name,'UNKNOW_TYPE');
end if;
end loop;
--動態的SQL語句
l_ignone:=dbms_sql.execute(l_cursor);
end loop;
commit;
dbms_sql.close_cursor(l_cursor);
end Insert_Rows;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-985336/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 物件導向之內部類物件
- ASP內建物件 (轉)物件
- 用abap實現內表的行列轉換-原始碼2 (轉)原始碼
- 物件導向--內部屬性型別物件型別
- JS實現檢查給定時間範圍是否在每天的某個時間段內JS
- JS判定一個給定的時間在某個時間範圍內JS
- JavaScript的內建物件JavaScript物件
- 一種區域性固定表頭的實現方案(橫向可跟隨內容一同滾動,縱向鎖定表頭)
- 內向者的 DevOpsdev
- 關於EL在JSP內呼叫RequestScope內建物件報錯的問題JS物件
- 物件導向程式設計之super內建函式的用法物件程式設計函式
- 在Linux行內直接進行大小寫轉換Linux
- 利用oracle job定時向某個表插入資料Oracle
- jquery實現的設定指定元素的文字內容和html內容jQueryHTML
- 轉 cenwenchu79 的部分內容分享給自己的同事
- JS的常用內建物件JS物件
- 判斷物件是否在視線內物件
- PHP面試常考內容之物件導向(3)PHP面試物件
- JAVA物件導向基礎--N種內部類Java物件
- DevOps如何正確的在企業內進行實踐dev
- 利用jquery實現的向指定元素追加指定內容jQuery
- 在向表中插入大量行時,提示ora-30009錯誤的解決過程
- 從物件導向到模式再到真正的物件導向 (轉)物件模式
- 行內元素屬性設定
- 實在智慧RPA如何玩轉內容電商?
- 2.1.2 Python物件導向之反射以及內建方法Python物件反射
- javascript獲取偽物件before和after定義的內容JavaScript物件
- 【C語言】給定兩個整型變數的值,將兩個值的內容進行交換C語言變數
- arguments物件獲取給函式傳遞的實際引數物件函式
- 習大大新春致辭中提到的“內涵和外延”其實常被用於物件導向的建模物件
- jquery js 設定 div 的內容,給 div 新增一個屬性jQueryJS
- 直播原始碼,實現內容列表的豎向滑動原始碼
- Java的內傷 (轉)Java
- element-ui裡Form 表單內給label內容新增圖示提示UIORM
- JavaScript高階:JavaScript物件導向,JavaScript內建物件,JavaScript BOM,JavaScript封裝JavaScript物件封裝
- Java在方法作用域內建立的內部類Java
- 物件直接量內方法的寫法物件
- .Net的內建物件之一 Request物件