亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? generator_api.htm

?? Oracle PL/SQL procedure generator (second generator type)
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
<HTML>
<HEAD>
<TITLE>PL/Generator API</TITLE>
</HEAD>
<BODY bgcolor="white" background="bar_products.gif">
<DIR>
<DIR>
<table border=0 cellspacing=0 cellpadding=0 valign=top  width=650>
<tr><td width="51" valign=top>

<br>

<td valign="top" width="600"> <IMG SRC=generator.gif WIDTH=285 HEIGHT=48>

<br>
<hr>
<P>

<B><FONT SIZE=4>Part 4. Using the PL/Generator API</B></FONT></A> 
<P>

The PL/Generator API or Application Programmatic Interface consists of a set of packages containing programs you can call to modify the behavior of PL/Generator and the code it generates. 
<P>You will learn in Part 3 of this document about the Object Information Repository of PL/Generator, which stores information about the generated code characteristics, and also about a number of other PL/Generator features that are not currently available through the screen interface.
<P>
<A HREF="#InformationRepository"><FONT  SIZE=3>About the PL/Generator Object Information Repository</FONT></A>
<P>
<A HREF="#KeyCharacteristics"><FONT  SIZE=3>Setting Primary Key Characteristics</FONT></A>

<DIR>
<A HREF="#Specifying"><FONT SIZE=2>Specifying the Primary Key</FONT></A><BR>
<A HREF="#Generating"><FONT SIZE=2>Generating the Primary Key</FONT></A><BR>
<A HREF="#Setting"><FONT SIZE=2>Setting Primary Key Descriptor Columns</FONT></A><BR> 
<A HREF="#Primary"><FONT SIZE=2>The Update Primary Key Procedure</FONT></A> <BR>
<P>
</DIR>

<A HREF="#ColumnCharacteristics"><FONT  SIZE=3>Setting Column Characteristics</FONT></A>
<DIR>
<A HREF="#HidingColumns"><FONT SIZE="2">Hiding Columns</FONT></A><BR>
<A HREF="#IndividualColumns"><FONT SIZE="2">Updating Individual Columns</FONT></A><BR>
<A HREF="#ApplyingFunctions"><FONT SIZE="2">Applying Functions to Columns</FONT></A><BR>
<A HREF="#Defining"><FONT SIZE=2>Defining Standard Audit Columns</FONT></A>
</DIR>

<P>
<A HREF="#ErrorHandling"><FONT SIZE=3>Setting Error Handling</FONT></A>
<DIR>
<A HREF="#HandlingMethod"><FONT SIZE="2">Setting the Exception Handling Method</FONT></A>
</DIR>

<P>
<A HREF="#RetrievalOptions"><FONT SIZE="3">Setting Additional Retrieval Options</FONT></A>
<DIR>
<A HREF="#GeneratingCOUNT"><FONT SIZE="2">Generating COUNT Functions</FONT></A><BR>
<A HREF="#insideSQL"><FONT SIZE="2">Enabling Execution of Functions inside SQL</FONT></A>
</DIR>

<P>
<A HREF="#SettingPerformance"><FONT  SIZE=3>Setting Performance/Tracing Options</FONT></A>
<DIR>
<A HREF="#CachingData"><FONT SIZE="2">Caching Data for Faster Access</FONT></A><BR>
<A HREF="#EmployingCursor"><FONT SIZE="2">Employing Cursor Variables</FONT></A><BR>
<A HREF="#RefiningCursor"><FONT SIZE="2">Refining Cursor Select Lists</FONT></A><BR>
<A HREF="#GeneratingStand"><FONT SIZE="2">Generating Stand-alone Programs</FONT></A><BR>
<A HREF="#UsingPLVxmn"><FONT SIZE="2">Using PLVxmn for Execution Tracing</FONT></A>
</DIR>

<P>
<A HREF="#SettingNaming"><FONT  SIZE=3>Setting Naming Standards</FONT></A><P>
<A HREF="#Generatingfrom"><FONT  SIZE=3>Generating from Views</FONT></A><P>
<A HREF="#Miscellaneous"><FONT  SIZE=3>Miscellaneous Settings</FONT></A>
<DIR>
<A HREF="#CompanyName"><FONT SIZE="2">Setting the Company Name</FONT></A>
</DIR>
<P>
<A HREF="#GenerationSession"><FONT  SIZE=3>Registering the Generation Session</FONT></A>
<P>
<A HREF="#Clearing"><FONT  SIZE=3>Clear Object Information Repository Settings</FONT></A><BR>
<DIR>
<A HREF="#ClearSchema"><FONT SIZE="2">Clear Schema</FONT></A><BR>
<A HREF="#ClearObject"><FONT SIZE="2">Clear Object</FONT></A><BR>
<A HREF="#ClearScreens"><FONT SIZE="2">Clear Screens and Individual Fields</FONT></A>
</DIR>
<A HREF="#Customizing"><FONT  SIZE=3>Customizing Generated Code</FONT></A>

<P>
<A HREF="#Managing"><FONT  SIZE=3>Managing Privileges</FONT></A>
<DIR>
<A HREF="#Default"><FONT SIZE="2">Default Privileges</FONT></A><BR>
<A HREF="#Activating"><FONT SIZE="2">Activating the Privileges Mechanism</FONT></A><BR>
<A HREF="#Adding"><FONT SIZE="2">Adding a Privilege</FONT></A><BR>
<A HREF="#Removing"><FONT SIZE="2">Removing a Privilege</FONT></A><BR>
<A HREF="#Validating"><FONT SIZE="2">Validating Access</FONT></A>
</DIR>

<P>
<A HREF="#Code"><FONT  SIZE=3>Validating the Code</FONT></A>
<DIR>
<A HREF="#Identifiers"><FONT SIZE="2">Validating Identifiers</FONT></A><BR>
<A HREF="#Size"><FONT SIZE=2>Reducing Size of Long Identifier Names</FONT></A> <BR>
<A HREF="#Automatic"><FONT SIZE="2">Automatic Invalid Identifier Correction</FONT></A><BR>
<A HREF="#Compile"><FONT SIZE="2">Compile Failures</FONT></A>
</DIR>
<A HREF="#GenDB"><FONT SIZE=3>Generating to the Database</FONT></A> <BR>
<P>
<A HREF="#Avoidance"><FONT SIZE=3>Complete Avoidance of UTL_FILE</FONT></A> <BR>
<P>
<A HREF="#Utility"><FONT  SIZE=3>Export/Import Utility</FONT></A><P>
<A HREF="#Batch"><FONT  SIZE=3>Batch Generation of Code</FONT></A><P>
<A HREF="#Keeping"><FONT  SIZE=3>Keeping Generated Code Current</FONT></A>
<DIR>
<A HREF="#Registering"><FONT SIZE="2">Registering the Generation Session</FONT></A><BR>
<A HREF="#Regenerating"><FONT SIZE="2">Regenerating Code Based on Registered Sessions</FONT></A><BR>
<A HREF="#Automating"><FONT SIZE="2">Automating the Regeneration Process</FONT></A>
</DIR>

<P>

<HR>
<P>


<B><FONT  SIZE=4>
<P>
<A NAME="InformationRepository">About The PL/Generator Object Information Repository</A> 
</B></FONT>
<P>
The PL/Generator Objection Information Repository (OIR) is a database table containing special information about how you want your generated code to look. There are four levels of information within the OIR: <DIR>
<DIR>

<P>Global across schemas (for a specific driver) 
<P>Global within a schema 
<P>For a specific table or view (or other database object) 
<P>For a column in a table </DIR>
</DIR>

<P>
With this hierarchy, you can specify a certain standard approach for all tables within a certain schema and then override that standard for specific tables within the schema. PL/Generator will search from the bottom up on that list until it finds an entry for the specified behavior. 
<P>
The OIR is actually a table named plg_doir, which is created in the PL/Generator schema. The PLGdoir package offers a programmatic interface to this table. The programs in PLGdoir that you will be using are described below in the appropriate sections. 
<P>
You will most likely want to place calls to the appropriate PLGdoir inside a file and then execute that (or the stored procedure created in the file). You will want to avoid calling PLGdoir programs directly from the SQL*Plus command line or other third-party execution environment, because they will not be readily available for re-execution.  
<P>
Remember that most calls to the PLGdoir packaged programs make changes to the underlying table. If you exit from SQL*Plus and autocommit is turned on (the default), those changes will be committed. Generally, though, you will need to commit your changes explicitly before they will be saved and available through another connection to the Oracle database. 
<P>
The following sections show you how to use different aspects of the OIR API. Characteristics of code are defined within the context of a specific driver. In almost every case, therefore, the first argument will be the driver with which you are working.  
<P>
Since the first release of PL/Generator focuses on the generation f table encapsulation packages, the driver used in all examples is the value returned by the call to this named constant: <DIR>
<DIR>

<FONT FACE="Courier,Courier New" SIZE=1><P>PLGte.driver </DIR>
</DIR>

</FONT>
<P>
PLGte is the package used to define the driver language within PL/Generator for table encapsulation and driver is a constant containing the name of the driver, which happens to be "TE". 
<P>&nbsp; 
<B>
<FONT  SIZE=4><P><A NAME="KeyCharacteristics">Setting Primary Key Characteristics</A> 
</B></FONT>
<P>
PL/Generator allows you to work with primary keys in the following ways: 

<UL>
<LI>Define a primary key to PL/Generator if there is not one defined for the table. </LI>
<LI>Specify the method by which the next primary key is generated (i.e., a sequence, function or procedure). </LI>
<LI>Select a unique index as returning the primary key descriptor (a.k.a., name).</LI>
</UL>

<B><I>
<P>
<A NAME="Specifying">Specifying the Primary Key</A> </B></I></FONT>

<P>
Unlike most PL/SQL code generators, PL/Generator allows you to generate packages for tables that do not have a primary key defined. If this is the case, you can specify columns in OIR to be treated as part of the primary key for purposes of code generation. 
<P>
To define a column as being part of the table's primary key, call the following program: <DIR>
<DIR>

<FONT FACE="Courier,Courier New" SIZE=1><P>PROCEDURE PLGdoir.setpkycol (<BR>
   drv IN VARCHAR2,<BR>
   tab IN VARCHAR2, <BR>
   col IN VARCHAR2, <BR>
   pos IN INTEGER := 1, <BR>
   sch IN VARCHAR2 := NULL);  </DIR>
</DIR>

</FONT>
<P>
where <I>tab</I> is the name of the table, <I>col</I> is the name of the column, <I>pos</I> is the position in the primary key (see note below concerning this value) and <I>sch</I> is the schema in which the table is located (the default of NULL is interpreted to be the current schema). 
<P>
Suppose, for example, that we have the following table definition and no primary key: <DIR>
<DIR>

<FONT FACE="Courier,Courier New" SIZE=1><P>CREATE TABLE store (<BR>
   region_id NUMBER,<BR>
   store_id NUMBER,<BR>
   name VARCHAR2(100); </DIR>
</DIR>

</FONT>
<P>
To define the primary key (for purposes of PL/Generator generation) as (region_id, store_id), you would issue the following two calls: <DIR>
<DIR>

<FONT FACE="Courier,Courier New" SIZE=1><P>BEGIN<BR>
   PLGdoir.setpkycol (PLGte.driver, 'store', 'region_id', 1);<BR>
   PLGdoir.setpkycol (PLGte.driver, 'store', 'store_id', 2);<BR>
END; </DIR>
</DIR>

</FONT>
<P>
Notice that I have specified the columns of the primary key in the same order as found in the table. The default position is 1, which means that if I did not specify those two different positions in my calls to PLGdoir.setpkycol, the result would be a primary key definition of just one column: store_id. 
<P>
If you do take this approach to defining the primary key, you should also make sure that a unique index based on these same columns is present. You will then get the same generated code as you would with a real primary key constraint. 
<P>
Note: when you specify multiple primary key columns, they should be defined in the same order they appear in the table definition. That is the order they will appear in the parameter list <I>regardless</I> of the order you specify in calls to PLGdoir.setpkycol. This limitation may change in future releases. 

<B><I><FONT ><P><A NAME="Generating">Generating the primary key</A> </B></I></FONT>

<P>
Sometimes you will supply the primary key when you perform an insert. In many other situations, however, the primary key will be generated, usually by a sequence. PL/Generator supports three different methods for generating a primary key: by sequence, by procedure and by function. If you indicate in OIR that a primary key is generated, then the insert procedure (PKG.ins) will <I>return</I> the primary key in the parameter list as one or more OUT arguments. PL/Generator will also create a PKG.nextpky function that returns the next primary key. 
<P>
To indicate that a primary key is to be generated from a sequence, call the setseqname procedure: <DIR>
<DIR>

<FONT FACE="Courier,Courier New" SIZE=1><P>PROCEDURE PLGdoir.setseqname<BR>
   (drv IN VARCHAR2,<BR>
    tab IN VARCHAR2,<BR>
    seq IN VARCHAR2, <BR>
    sch IN VARCHAR2 := NULL); </DIR>
</DIR>

</FONT>
<P>
To indicate that a primary key is to be generated from a procedure, call the setpkyproc procedure: <DIR>
<DIR>

<FONT FACE="Courier,Courier New" SIZE=1><P>PROCEDURE PLGdoir.setpkyproc <BR>
   (drv IN VARCHAR2,<BR>
    tab IN VARCHAR2, <BR>
    proc IN VARCHAR2, <BR>
    sch IN VARCHAR2 := NULL); </DIR>
</DIR>

</FONT>
<P>
To indicate that a primary key is to be generated from a function, call the setpkyfunc procedure: <DIR>
<DIR>

<FONT FACE="Courier,Courier New" SIZE=1><P>PROCEDURE PLGdoir.setpkyfunc <BR>
   (drv IN VARCHAR2,<BR>
    tab IN VARCHAR2, <BR>
    func IN VARCHAR2, <BR>
    sch IN VARCHAR2 := NULL); </DIR>
</DIR></FONT>


<P>
In the following example I associate a sequence for the emp table: <DIR>
<DIR>

<FONT FACE="Courier,Courier New" SIZE=1><P>PLGdoir.setseqname (PLGte.driver, 'emp', 'empno_seq'); </DIR>
</DIR>

</FONT>
<P>
In the next call, I specify that a procedure be called which will in return generate the primary key for the current table: <DIR>
<DIR>

<FONT FACE="Courier,Courier New" SIZE=1><P>PLGdoir.setpkyproc (<BR>
   PLGte.driver,<BR>
   'STREET', <BR>
   'location_pkg.ins (location_type_pkg.location_type_name$pky (''STREET''), retval)'); </DIR>
</DIR>

</FONT>
<P>
This is more complex an action than you are likely to take with the OIR. Keep in mind, however, that if you set up a procedure call to generate/return the next primary key, you must return that primary key (a single integer value) through an OUT or IN OUT argument named "retval". 
<P>
These set primary key procedures also allow you to use wild-carding to set this property for multiple tables. Consider the following call: <DIR>
<DIR>

<FONT FACE="Courier,Courier New" SIZE=1><P>PLGdoir.setseqname (PLGte.driver, '%', '_pk_seq'); </DIR>
</DIR>

</FONT>
<P>
In this case, PLGdoir detects that the sequence "name" starts with a "_" and so is treated as a suffix. It then identifies the tables which match the first argument (which means all tables, in this case). For each table, it constructs a sequence name of the format &lt;table_name&gt;_pk_seq. If it finds a sequence by that name, then an entry in OIR is recorded.  
<P>
If your sequence "name" ends with a "_", then it is treated as a prefix and the corresponding scan is then performed. 
<P>
At this time, PL/Generator only recognizes the underscore as a prefix or suffix indicator. 

<B><I><P><A NAME="Setting">Setting Primary Key Descriptor Columns</A> </B></I>
<P>
You specify the primary key column(s) in a table-level constraint. But there is usually also another column or columns which serves as the "descriptor" of the table. For example, in the classic emp table, empno is the primary key while ename is the descriptor. The descriptor column is usually unique, but the presence of a unique index on a column is not enough to necessarily identify the descriptor column. To set the descriptor column(s), you will select the unique index which contains those (and only those) columns. 
<P>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱妇无码大片在线观看| 日本精品裸体写真集在线观看| 樱花草国产18久久久久| 国产精品丝袜一区| 国产亚洲欧美一级| 国产精品女同一区二区三区| 国产欧美综合色| 一区二区三区中文在线| 裸体歌舞表演一区二区| 国产精品一区在线观看乱码 | 在线一区二区三区四区五区| 欧美午夜电影网| 久久久精品黄色| 亚洲高清三级视频| 99久久久国产精品| 日韩一区二区免费高清| 国产欧美精品一区| 欧美aⅴ一区二区三区视频| 国产成人精品亚洲日本在线桃色 | 国产成人精品网址| 日韩欧美综合一区| 亚洲电影视频在线| 岛国精品在线观看| 国产精品私房写真福利视频| 免费黄网站欧美| 欧美丰满一区二区免费视频 | 老司机一区二区| 欧美一区二区私人影院日本| 亚洲成人资源在线| 欧美日韩一区二区三区高清| 国产精品午夜在线观看| 国产精品一区二区x88av| 日韩免费看的电影| 国产精品888| 欧美激情在线看| 99视频国产精品| 99久久综合99久久综合网站| 成人黄色软件下载| 欧美一区二区三区四区久久| 秋霞电影网一区二区| 欧美日本一区二区三区四区| 午夜伦欧美伦电影理论片| 欧美午夜电影一区| 国模套图日韩精品一区二区 | 日韩精品中午字幕| www.亚洲人| 亚洲激情图片qvod| 91精品国产色综合久久不卡电影| 久久99热这里只有精品| 国产欧美一区二区在线观看| 在线这里只有精品| 国模套图日韩精品一区二区| 亚洲男人的天堂网| 久久久久久一二三区| 91在线观看高清| 国产精品一区二区免费不卡 | 99久久精品免费看| 午夜国产精品一区| 日韩伦理免费电影| 欧美一区二区三区在线观看| 91在线视频免费91| 国产一区日韩二区欧美三区| 日韩激情视频在线观看| 亚洲日本va在线观看| 欧美激情中文字幕| 国产夜色精品一区二区av| 欧美日韩精品欧美日韩精品一综合| 成人av高清在线| 欧美日韩www| 美女性感视频久久| 日韩av不卡在线观看| 色婷婷久久久亚洲一区二区三区 | 免费成人在线视频观看| 中文字幕久久午夜不卡| 国产福利电影一区二区三区| 日韩亚洲欧美一区| 激情五月激情综合网| 精品久久久久一区| 久久99精品久久久久婷婷| 欧美不卡123| 国内精品视频666| 日本一区二区三区视频视频| 国产精品69毛片高清亚洲| 国产精品久久久久久久久图文区 | 国产伦精品一区二区三区免费| 日韩无一区二区| 粗大黑人巨茎大战欧美成人| 国产视频一区在线播放| av动漫一区二区| 亚洲最大成人综合| 欧美精品一区二区在线播放| 久久久久久99久久久精品网站| 亚洲免费在线电影| 欧美精品在线观看播放| 国模套图日韩精品一区二区| 中文字幕亚洲一区二区va在线| 在线国产电影不卡| 成人sese在线| 麻豆成人av在线| 一区二区三区免费网站| 精品国产伦一区二区三区观看方式 | 97se亚洲国产综合自在线不卡| 免费观看30秒视频久久| 中文字幕一区在线| 久久亚洲精精品中文字幕早川悠里| 色欧美日韩亚洲| 国产成a人亚洲| 看片的网站亚洲| 七七婷婷婷婷精品国产| 亚洲精品视频一区二区| 亚洲国产精品二十页| 国产天堂亚洲国产碰碰| 精品国产乱码久久久久久夜甘婷婷 | 国产福利一区二区三区视频在线 | 日韩精品资源二区在线| 欧美一级高清片在线观看| 制服丝袜av成人在线看| 欧美绝品在线观看成人午夜影视| 99精品黄色片免费大全| 日本高清不卡aⅴ免费网站| 色综合天天做天天爱| 欧美三级电影精品| 91精品国产色综合久久不卡蜜臀| 欧美喷水一区二区| 精品少妇一区二区三区日产乱码| 精品国产一区二区三区久久久蜜月 | 91免费小视频| 欧美日韩精品一区二区| 欧美一区二区三区视频在线 | 91精品国产色综合久久不卡电影 | 欧美精品在线一区二区| 日韩欧美一二三区| 中文字幕免费观看一区| 亚洲成人动漫一区| 国产一区二区在线视频| 久久99在线观看| 成人高清视频在线| 91精品一区二区三区在线观看| 成人精品视频一区二区三区| 精品一区二区三区在线观看| 国产精品资源在线| 欧美伊人精品成人久久综合97| 久久综合成人精品亚洲另类欧美| 一区二区三区在线视频播放| 国产成a人无v码亚洲福利| 91精品国产91热久久久做人人| 国产精品国产三级国产三级人妇| 精品一区二区日韩| 欧美久久久一区| 亚洲自拍偷拍网站| 91女人视频在线观看| 中文字幕制服丝袜成人av | 麻豆精品在线播放| 欧美视频一区在线| 亚洲主播在线观看| 欧美午夜寂寞影院| 三级不卡在线观看| 欧美一卡2卡三卡4卡5免费| 亚洲在线中文字幕| 欧美视频一区在线| 无码av免费一区二区三区试看 | 欧美bbbbb| 国产亚洲精久久久久久| 国产成人高清在线| 亚洲欧洲精品成人久久奇米网| 99视频在线精品| 亚洲精品水蜜桃| 日韩亚洲欧美在线| 成人黄色a**站在线观看| 国产精品高潮呻吟| 欧美放荡的少妇| 成人综合婷婷国产精品久久| 一区二区三区在线视频观看58| 欧美精品视频www在线观看| 国产在线精品一区二区不卡了| 中文字幕第一区| 欧美一级夜夜爽| 成人高清视频免费观看| 日韩成人伦理电影在线观看| 久久久精品免费网站| 884aa四虎影成人精品一区| 成人免费视频免费观看| 日韩av在线播放中文字幕| 亚洲欧洲国产日韩| 26uuu欧美| 欧美zozo另类异族| 7777精品久久久大香线蕉| 色综合天天综合网天天看片| 久久成人免费日本黄色| 五月婷婷综合网| 亚洲美女精品一区| 国产精品久久看| 中文av一区二区| 久久综合精品国产一区二区三区 | 久久男人中文字幕资源站| 91麻豆精品国产91久久久久久 | 亚洲一二三专区| 一区二区三区在线观看欧美| 日韩一区中文字幕| 亚洲欧美综合网|