2010-10-25 241 views

回答

2

由於Oracle提供了名爲SQL Developer的工具,因此它具有從表數據生成插入腳本的功能。

2

如果你想要一個軟件包來完成所有的工作(雖然SQL Developer,TOAD等都可以做到)。但最接近的,我已經看到了sp_generate_inserts是:

「PL/SQL接口生成器」 http://sourceforge.net/projects/plsqlintgen/

在下載運行兩個腳本之後,你必須這樣做:

CREATE TABLE XYZ(AA VARCHAR2(50) , BB NUMBER(10,2)); 

declare 

TPT XTAB_PKG.TAB_PARAMETERS_TYP ; 
S xtab_pkg.SQLDATA_TYP ; 
E XTAB_PKG.xerror_typ ; 
BEGIN 
     TPT.OWNER := 'ownerName'; 
     TPT.TABLE_NAME := 'xyz'; 
     TPT.PACKAGE_NAME := 'xyz_pkg'; 
     TPT.FILE_PATH := NULL ; 
     TPT.FILE_NAME := NULL; 
     xtab_pkg.Generate(tpt,s,e); 

     for i in s.first..s.last 
       loop 
         DBMS_OUTPUT.PUT_LINE(s(I)); 
       end loop;  

END ; 

並且這將爲輸入表發出創建SPEC/BODY的CRUD(這不會創建包,它只是將包腳本存儲在s變量中,例如:

例如

/* PL/SQL Interface for Table xyz*/ 
CREATE SEQUENCE xyz_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999999999999999999999999999 NOCYCLE NOORDER NOCACHE 
/
create or replace package xyz_pkg is 
SUCCESS  constant varchar2(20) := 'SUCCESS'; ERROR  constant varchar2(20) := 'ERROR'; WARNING  constant varchar2(20) := 'WARNING'; 
type xerror_typ is record (status  varchar2(50),message  varchar2(2000)); 
type xyz_typ is record 
(
); 
type xyz_ref is r....... 
Procedure Add (r in out xyz_typ, p_commit in boolean, e out xerror_typ); 
Procedure Add (t in out xyz_tab, p_commit in boolean, e out xerror_typ); 
Procedure Del (p_ in xyz.%type, p_commit in boolean, e out xerror_typ); 
Procedure Del (t in xyz_tab, p_commit in boolean, e out xerror_typ); 
Procedure Upd (r in out xyz_typ, p_commit in boolean, e out xerror_typ); 
Procedure Upd (t in out xyz_tab, p_commit in boolean, e out xerror_typ); 

即使這並不完全符合您的需要,您應該能夠將邏輯提取到您自己的方式。 (只是一張紙條,我根本不附屬於這個項目)