您的位置:首页 > 数据库 > Oracle

Quick Trick About Using Dbms_Metadata With Forms_DDL In Oracle Forms

2016-12-25 19:15 701 查看
[align=justify]Example is given below to fetch any Oracle objects DDL script using DBMS_Metadata.Get_DDL command in Oracle Forms using Forms_DDL command.[/align] [align=justify] [/align] [align=justify]You can download this form for free including source code with following link from Google Drive Dbms_Utility.fmb[/align] [align=justify]
You may need to create a table in current schema/user by which you are logging with and below is the script for this:

Create Table DDL_Script (ddl varchar2(1000));

[/align] [align=justify]I will add further more tabs related to Dbms utility tasks to this form and will share also.[/align] [align=justify] [/align]

[align=justify] [/align] [align=justify]Following is the code written in Show DDL push button:[/align] [align=justify]DECLARE[/align] [align=justify] v VARCHAR2 (4000);[/align] [align=justify] objtpe VARCHAR2 (100);[/align] [align=justify]BEGIN[/align] [align=justify] -- v := dbms_metadata.get_ddl('TABLE', :objname, user);[/align] [align=justify] SELECT object_type[/align] [align=justify] INTO objtpe[/align] [align=justify] FROM user_objects[/align] [align=justify] WHERE object_name = :objname;[/align] [align=justify] [/align] [align=justify] :objtype := objtpe;[/align] [align=justify] [/align] [align=justify] FORMS_DDL ('drop table ddl_script');[/align] [align=justify] FORMS_DDL( 'create table ddl_script as select dbms_metadata.get_ddl('[/align] [align=justify] || CHR (39)[/align] [align=justify] || objtpe[/align] [align=justify] || CHR (39)[/align] [align=justify] || ','[/align] [align=justify] || CHR (39)[/align] [align=justify] || :objname[/align] [align=justify] || CHR (39)[/align] [align=justify] || ', user) ddl from dual');[/align] [align=justify] [/align] [align=justify] IF FORM_SUCCESS[/align] [align=justify] THEN[/align] [align=justify] SELECT ddl[/align] [align=justify] INTO :ddltxt[/align] [align=justify] FROM ddl_script[/align] [align=justify] WHERE ROWNUM = 1;[/align] [align=justify] ELSE[/align] [align=justify] :statbar := 'Message: Object does not exists.';[/align] [align=justify] FORMS_DDL ('create table ddl_script (ddl varchar2(1000))');[/align] [align=justify] END IF;[/align] [align=justify]END;[/align] [align=justify] [/align] [align=justify]Following is the code written in When-new-form-instance trigger:[/align] [align=justify] [/align] [align=justify]set_window_property(forms_mdi_window, window_state, maximize);[/align] [align=justify] [/align] [align=justify]DECLARE[/align] [align=justify] rg_list_id RECORDGROUP;[/align] [align=justify] rg_name VARCHAR2 (20) := 'OBJECTTYPES';[/align] [align=justify] ret_code NUMBER;[/align] [align=justify] --The following holds a SELECT query from which the list elements are derived.[/align] [align=justify] v_select VARCHAR2 (300);[/align] [align=justify]BEGIN[/align] [align=justify] BEGIN[/align] [align=justify] FORMS_DDL ('drop table ddl_script');[/align] [align=justify] EXCEPTION[/align] [align=justify] WHEN OTHERS[/align] [align=justify] THEN[/align] [align=justify] NULL;[/align] [align=justify] END;[/align] [align=justify] [/align] [align=justify] BEGIN[/align] [align=justify] FORMS_DDL ('create table ddl_script (ddl varchar2(1000))');[/align] [align=justify] EXCEPTION[/align] [align=justify] WHEN OTHERS[/align] [align=justify] THEN[/align] [align=justify] NULL;[/align] [align=justify] END;[/align] [align=justify] [/align] [align=justify] ret_code := POPULATE_GROUP ('OBJECTNAMES');[/align] [align=justify] POPULATE_LIST ('OBJNAME', 'OBJECTNAMES');[/align] [align=justify]END;[/align] [align=justify] [/align] [align=justify]You can find the record group details itself in form which I am sharing with this post.[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: