forked from docs/doc-exports
Reviewed-by: Hasko, Vladimir <vladimir.hasko@t-systems.com> Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Co-authored-by: Lu, Huayi <luhuayi@huawei.com> Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
436 lines
46 KiB
HTML
436 lines
46 KiB
HTML
<a name="EN-US_TOPIC_0000001819416333"></a><a name="EN-US_TOPIC_0000001819416333"></a>
|
||
|
||
<h1 class="topictitle1">PL/SQL Collections (Using User-Defined Types)</h1>
|
||
<div id="body8662426"><p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p9667843201916">This section descripes the migration syntax of Oracle PL/SQL Collections. The migration syntax decides how the keywords/features are migrated.</p>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p12168114014437">A user-defined type (UDT) is a data type that is derived from a supported data type.</p>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p159998391430">UDT uses built-in datatypes and other user-defined datatypes as the building blocks for datatypes that model the structure and behavior of data in applications. UDT makes it easier to work with PL/SQL collections.</p>
|
||
<div class="section" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_section3228184284319"><h4 class="sectiontitle">UDT Table</h4><p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p247619523163">The table type is created to track the structure of the UDT. No data will be stored in the table.</p>
|
||
</div>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p6137193510573"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b59292012135414">Input - CREATE TABLE TYPE</strong></p>
|
||
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen313816353577"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="o"><</span><span class="k">OR</span><span class="w"> </span><span class="k">REPLACE</span><span class="o">></span><span class="w"> </span><span class="k">TYPE</span><span class="w"> </span><span class="o"><</span><span class="k">schema</span><span class="p">.</span><span class="o">></span><span class="n">inst_no_type</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="k">OF</span><span class="w"> </span><span class="n">VARCHAR2</span><span class="w"> </span><span class="p">(</span><span class="mi">32767</span><span class="p">);</span>
|
||
</pre></div></td></tr></table></div>
|
||
|
||
</div>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p15151335105717"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b2388141705416">Output</strong></p>
|
||
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen915373512573"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="o"><</span><span class="k">schema</span><span class="p">.</span><span class="o">></span><span class="n">mig_inst_no_type</span><span class="w"> </span>
|
||
<span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">typ_col</span><span class="w"> </span><span class="n">VARCHAR2</span><span class="w"> </span><span class="p">(</span><span class="mi">32767</span><span class="p">)</span><span class="w"> </span><span class="p">);</span>
|
||
</pre></div></td></tr></table></div>
|
||
|
||
</div>
|
||
<div class="section" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_section7892439174418"><h4 class="sectiontitle">UDT VArray</h4><p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p13221855111613"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b7969182119542">Input - CREATE VArray</strong></p>
|
||
</div>
|
||
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen136057169197"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TYPE</span><span class="w"> </span><span class="n">phone_list_typ_demo</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">VARRAY</span><span class="p">(</span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="k">OF</span><span class="w"> </span><span class="n">VARCHAR2</span><span class="p">(</span><span class="mi">25</span><span class="p">);</span>
|
||
</pre></div></td></tr></table></div>
|
||
|
||
</div>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p1660519161199"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b2997123185418">Output</strong></p>
|
||
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen460617166199"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">mig_pone_list_typ_demo</span><span class="w"> </span>
|
||
<span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">typ_col</span><span class="w"> </span><span class="n">VARCHAR2</span><span class="w"> </span><span class="p">(</span><span class="mi">25</span><span class="p">)</span><span class="w"> </span><span class="p">);</span>
|
||
</pre></div></td></tr></table></div>
|
||
|
||
</div>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p1330371592110"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b12393102632111">Declare UDT</strong></p>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p1430451572119"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b1492112813545">Input - Declare UDT</strong></p>
|
||
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen2030417154215"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||
<span class="normal">2</span>
|
||
<span class="normal">3</span>
|
||
<span class="normal">4</span>
|
||
<span class="normal">5</span>
|
||
<span class="normal">6</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DECLARE</span>
|
||
<span class="w"> </span><span class="n">v_SQL_txt_array</span><span class="w"> </span>
|
||
<span class="w"> </span><span class="n">inst_no_type</span><span class="w"> </span><span class="o"><</span><span class="p">:</span><span class="o">=</span><span class="w"> </span>
|
||
<span class="w"> </span><span class="n">inst_no_type</span><span class="p">()</span><span class="o">></span><span class="p">;</span>
|
||
<span class="k">BEGIN</span>
|
||
<span class="w"> </span><span class="err">…</span>
|
||
</pre></div></td></tr></table></div>
|
||
|
||
</div>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p19305171572112"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b1475552917545">Output</strong></p>
|
||
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen1130510156219"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||
<span class="normal"> 2</span>
|
||
<span class="normal"> 3</span>
|
||
<span class="normal"> 4</span>
|
||
<span class="normal"> 5</span>
|
||
<span class="normal"> 6</span>
|
||
<span class="normal"> 7</span>
|
||
<span class="normal"> 8</span>
|
||
<span class="normal"> 9</span>
|
||
<span class="normal">10</span>
|
||
<span class="normal">11</span>
|
||
<span class="normal">12</span>
|
||
<span class="normal">13</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DECLARE</span>
|
||
<span class="cm">/* v_SQL_txt_array inst_no_type <:= inst_no_type()>; */</span>
|
||
<span class="k">BEGIN</span>
|
||
<span class="w"> </span><span class="k">EXECUTE</span><span class="w"> </span><span class="k">IMMEDIATE</span><span class="w"> </span><span class="s1">'DROP TABLE IF EXISTS </span>
|
||
<span class="s1"> v_SQL_txt_array; </span>
|
||
<span class="s1"> CREATE LOCAL TEMPORARY TABLE </span>
|
||
<span class="s1"> v_SQL_txt_array </span>
|
||
<span class="s1"> ON COMMIT PRESERVE ROWS </span>
|
||
<span class="s1"> AS SELECT *, CAST(NULL AS INT) AS </span>
|
||
<span class="s1"> typ_idx_col </span>
|
||
<span class="s1"> FROM mig_inst_no_type </span>
|
||
<span class="s1"> WHERE FALSE'</span><span class="p">;</span><span class="w"> </span>
|
||
<span class="w"> </span><span class="err">…</span>
|
||
</pre></div></td></tr></table></div>
|
||
|
||
</div>
|
||
<div class="section" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_section188574615452"><h4 class="sectiontitle">UDT Count</h4><p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p971291191714"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b17630193519545">Input - UDT - COUNT in FOR LOOP</strong></p>
|
||
</div>
|
||
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen13506135814221"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||
<span class="normal"> 2</span>
|
||
<span class="normal"> 3</span>
|
||
<span class="normal"> 4</span>
|
||
<span class="normal"> 5</span>
|
||
<span class="normal"> 6</span>
|
||
<span class="normal"> 7</span>
|
||
<span class="normal"> 8</span>
|
||
<span class="normal"> 9</span>
|
||
<span class="normal">10</span>
|
||
<span class="normal">11</span>
|
||
<span class="normal">12</span>
|
||
<span class="normal">13</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">BEGIN</span>
|
||
<span class="w"> </span><span class="p">...</span>
|
||
<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="mi">1</span><span class="p">..</span><span class="n">v_jobnum_list</span><span class="p">.</span><span class="k">COUNT</span><span class="w"> </span>
|
||
<span class="w"> </span><span class="n">LOOP</span>
|
||
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="k">COUNT</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">v_abc</span>
|
||
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="p">...</span>
|
||
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="p">...</span>
|
||
<span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">nvl</span><span class="p">(</span><span class="n">t</span><span class="p">.</span><span class="n">batch_num</span><span class="p">,</span><span class="w"> </span>
|
||
<span class="w"> </span><span class="n">c_batchnum_null_num</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>
|
||
<span class="w"> </span><span class="n">v_jobnum_list</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
|
||
<span class="w"> </span><span class="p">...</span>
|
||
<span class="w"> </span><span class="k">END</span><span class="w"> </span><span class="n">LOOP</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="p">...</span><span class="w"> </span>
|
||
</pre></div></td></tr></table></div>
|
||
|
||
</div>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p950855813225"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b14895441185412">Output</strong></p>
|
||
<pre class="screen" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen3509205813222">BEGIN
|
||
...
|
||
FOR i IN 1..(SELECT COUNT(*) from v_jobnum_list)
|
||
LOOP
|
||
SELECT COUNT(*) INTO v_abc
|
||
FROM ...
|
||
WHERE ...
|
||
AND nvl(t.batch_num, c_batchnum_null_num) =
|
||
(SELECT typ_col FROM v_jobnum_list
|
||
WHERE typ_idx_col = i);
|
||
...
|
||
END LOOP;
|
||
... </pre>
|
||
<div class="section" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_section1942452104615"><h4 class="sectiontitle">UDT Record</h4><p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p557586111710">A Record type is used to create records and can be defined in the declarative part of any PL/SQL block, subprogram, or package.</p>
|
||
</div>
|
||
<div class="p" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p1455914110383"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_b19869143935316">Input - RECORD Type</strong><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen19994115633116"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||
<span class="normal">2</span>
|
||
<span class="normal">3</span>
|
||
<span class="normal">4</span>
|
||
<span class="normal">5</span>
|
||
<span class="normal">6</span>
|
||
<span class="normal">7</span>
|
||
<span class="normal">8</span>
|
||
<span class="normal">9</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">Create</span>
|
||
<span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="k">Replace</span><span class="w"> </span><span class="k">Procedure</span><span class="w"> </span><span class="n">test_proc</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">TYPE</span><span class="w"> </span><span class="n">t_log</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="n">RECORD</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">col1</span><span class="w"> </span><span class="nb">int</span><span class="w"> </span><span class="p">,</span><span class="n">col2</span><span class="w"> </span><span class="n">emp</span><span class="p">.</span><span class="n">ename</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="k">type</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">;</span>
|
||
<span class="w"> </span><span class="n">fr_wh_SQL</span><span class="w"> </span><span class="n">t_log</span><span class="w"> </span><span class="p">;</span>
|
||
<span class="k">BEGIN</span>
|
||
<span class="w"> </span><span class="n">fr_wh_SQL</span><span class="p">.</span><span class="n">col1</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="mi">101</span><span class="w"> </span><span class="p">;</span>
|
||
<span class="w"> </span><span class="n">fr_wh_SQL</span><span class="p">.</span><span class="n">col2</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="s1">'abcd'</span><span class="w"> </span><span class="p">;</span>
|
||
<span class="n">DBMS_OUTPUT</span><span class="p">.</span><span class="n">PUT_LINE</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">fr_wh_SQL</span><span class="p">.</span><span class="n">col1</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="s1">','</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">fr_wh_SQL</span><span class="p">.</span><span class="n">col2</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">;</span>
|
||
<span class="k">END</span><span class="w"> </span><span class="n">test_proc</span><span class="p">;</span>
|
||
<span class="o">/</span>
|
||
</pre></div></td></tr></table></div>
|
||
|
||
</div>
|
||
</div>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p1599765611310"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_b1057954562">Output</strong></p>
|
||
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen89994565317"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||
<span class="normal"> 2</span>
|
||
<span class="normal"> 3</span>
|
||
<span class="normal"> 4</span>
|
||
<span class="normal"> 5</span>
|
||
<span class="normal"> 6</span>
|
||
<span class="normal"> 7</span>
|
||
<span class="normal"> 8</span>
|
||
<span class="normal"> 9</span>
|
||
<span class="normal">10</span>
|
||
<span class="normal">11</span>
|
||
<span class="normal">12</span>
|
||
<span class="normal">13</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">Create</span>
|
||
<span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="k">Replace</span><span class="w"> </span><span class="k">Procedure</span><span class="w"> </span><span class="n">test_proc</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="cm">/*TYPE t_log IS RECORD ( col1 int,col2 emp.ename%type );*/</span>
|
||
<span class="w"> </span><span class="n">fr_wh_SQL</span><span class="w"> </span><span class="n">RECORD</span><span class="w"> </span><span class="p">;</span>
|
||
<span class="w"> </span><span class="n">MIG_t_log_col1</span><span class="w"> </span><span class="nb">int</span><span class="w"> </span><span class="p">;</span>
|
||
<span class="n">MIG_t_log_col2</span><span class="w"> </span><span class="n">emp</span><span class="p">.</span><span class="n">ename</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="k">type</span><span class="w"> </span><span class="p">;</span>
|
||
<span class="k">BEGIN</span>
|
||
<span class="k">select</span>
|
||
<span class="w"> </span><span class="n">MIG_t_log_col1</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">col1</span><span class="w"> </span><span class="p">,</span><span class="n">MIG_t_log_col2</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">col2</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">FR_WH_SQL</span><span class="w"> </span><span class="p">;</span>
|
||
<span class="w"> </span><span class="n">fr_wh_SQL</span><span class="p">.</span><span class="n">col1</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="mi">101</span><span class="w"> </span><span class="p">;</span>
|
||
<span class="w"> </span><span class="n">fr_wh_SQL</span><span class="p">.</span><span class="n">col2</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="s1">'abcd'</span><span class="w"> </span><span class="p">;</span>
|
||
<span class="n">DBMS_OUTPUT</span><span class="p">.</span><span class="n">PUT_LINE</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">fr_wh_SQL</span><span class="p">.</span><span class="n">col1</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="s1">','</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">fr_wh_SQL</span><span class="p">.</span><span class="n">col2</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">;</span>
|
||
<span class="k">END</span><span class="w"> </span><span class="p">;</span>
|
||
<span class="o">/</span>
|
||
</pre></div></td></tr></table></div>
|
||
|
||
</div>
|
||
<div class="section" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_section622916453467"><h4 class="sectiontitle">Enhancement of User-defined types</h4><p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p1895995172">The tool supports the enhancement of PL/SQL type of TABLE used in Oracle for specific data types and for any table column.</p>
|
||
</div>
|
||
<div class="p" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p162471567386"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b12676134905416">Input - PL/SQL type of TABLE of a specific data-type</strong><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen16846018154711"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||
<span class="normal">2</span>
|
||
<span class="normal">3</span>
|
||
<span class="normal">4</span>
|
||
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DECLARE</span>
|
||
<span class="w"> </span><span class="k">type</span><span class="w"> </span><span class="n">fr_wh_SQL_info_type</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="nb">VARCHAR</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
|
||
<span class="w"> </span><span class="n">fr_wh_SQL</span><span class="w"> </span><span class="n">fr_wh_SQL_info_type</span><span class="w"> </span><span class="p">[:</span><span class="o">=</span><span class="w"> </span><span class="n">fr_wh_SQL_info_type</span><span class="p">()];</span>
|
||
<span class="k">BEGIN</span>
|
||
<span class="w"> </span><span class="err">…</span>
|
||
</pre></div></td></tr></table></div>
|
||
|
||
</div>
|
||
</div>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p20852018104718"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_b966018474">Output</strong></p>
|
||
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen9853191818472"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||
<span class="normal"> 2</span>
|
||
<span class="normal"> 3</span>
|
||
<span class="normal"> 4</span>
|
||
<span class="normal"> 5</span>
|
||
<span class="normal"> 6</span>
|
||
<span class="normal"> 7</span>
|
||
<span class="normal"> 8</span>
|
||
<span class="normal"> 9</span>
|
||
<span class="normal">10</span>
|
||
<span class="normal">11</span>
|
||
<span class="normal">12</span>
|
||
<span class="normal">13</span>
|
||
<span class="normal">14</span>
|
||
<span class="normal">15</span>
|
||
<span class="normal">16</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DECLARE</span>
|
||
<span class="cm">/* type fr_wh_SQL_info_type is table of varchar(10); */</span>
|
||
<span class="cm">/* fr_wh_SQL fr_wh_SQL_info_type [:= fr_wh_SQL_info_type()]; */</span>
|
||
<span class="k">BEGIN</span>
|
||
<span class="w"> </span><span class="k">EXECUTE</span><span class="w"> </span><span class="k">IMMEDIATE</span><span class="w"> </span><span class="s1">'DROP TABLE IF EXISTS mig_fr_wh_SQL_info_type; </span>
|
||
<span class="s1"> CREATE LOCAL TEMPORARY TABLE mig_fr_wh_SQL_info_type </span>
|
||
<span class="s1"> ( typ_col VARCHAR (10) ) </span>
|
||
<span class="s1"> ON COMMIT PRESERVE ROWS'</span><span class="w"> </span><span class="p">;</span>
|
||
|
||
<span class="w"> </span><span class="k">EXECUTE</span><span class="w"> </span><span class="k">IMMEDIATE</span><span class="w"> </span><span class="s1">'DROP TABLE IF EXISTS fr_wh_SQL; </span>
|
||
<span class="s1"> CREATE LOCAL TEMPORARY TABLE fr_wh_SQL </span>
|
||
<span class="s1"> ON COMMIT PRESERVE ROWS AS </span>
|
||
<span class="s1"> AS SELECT *, CAST(NULL AS INT) AS typ_idx_col </span>
|
||
<span class="s1"> FROM mig_fr_wh_SQL_info_type </span>
|
||
<span class="s1"> WHERE FALSE'</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="err">…</span>
|
||
</pre></div></td></tr></table></div>
|
||
|
||
</div>
|
||
<div class="p" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p1586319584389"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b6273125620541">Input - PL/SQL type of TABLE of any table's column</strong><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen553419509496"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||
<span class="normal">2</span>
|
||
<span class="normal">3</span>
|
||
<span class="normal">4</span>
|
||
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DECLARE</span>
|
||
<span class="w"> </span><span class="k">type</span><span class="w"> </span><span class="n">fr_wh_SQL_info_type</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">fr_wh_SQL_info</span><span class="p">.</span><span class="n">col1</span><span class="o">%</span><span class="k">type</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="n">fr_wh_SQL</span><span class="w"> </span><span class="n">fr_wh_SQL_info_type</span><span class="w"> </span><span class="p">[:</span><span class="o">=</span><span class="w"> </span><span class="n">fr_wh_SQL_info_type</span><span class="p">()];</span>
|
||
<span class="k">BEGIN</span>
|
||
<span class="w"> </span><span class="err">…</span>
|
||
</pre></div></td></tr></table></div>
|
||
|
||
</div>
|
||
</div>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p17539145014910"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_b600187773">Output</strong></p>
|
||
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen145401450204917"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||
<span class="normal"> 2</span>
|
||
<span class="normal"> 3</span>
|
||
<span class="normal"> 4</span>
|
||
<span class="normal"> 5</span>
|
||
<span class="normal"> 6</span>
|
||
<span class="normal"> 7</span>
|
||
<span class="normal"> 8</span>
|
||
<span class="normal"> 9</span>
|
||
<span class="normal">10</span>
|
||
<span class="normal">11</span>
|
||
<span class="normal">12</span>
|
||
<span class="normal">13</span>
|
||
<span class="normal">14</span>
|
||
<span class="normal">15</span>
|
||
<span class="normal">16</span>
|
||
<span class="normal">17</span>
|
||
<span class="normal">18</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DECLARE</span>
|
||
<span class="cm">/* type fr_wh_SQL_info_type is table of fr_wh_SQL_info.col1%type; */</span>
|
||
<span class="cm">/* fr_wh_SQL fr_wh_SQL_info_type [:= fr_wh_SQL_info_type()]; */</span>
|
||
<span class="k">BEGIN</span>
|
||
<span class="w"> </span><span class="k">EXECUTE</span><span class="w"> </span><span class="k">IMMEDIATE</span><span class="w"> </span><span class="s1">'DROP TABLE IF EXISTS mig_fr_wh_SQL_info_type; </span>
|
||
<span class="s1"> CREATE LOCAL TEMPORARY TABLE mig_fr_wh_SQL_info_type </span>
|
||
<span class="s1"> ON COMMIT PRESERVE ROWS </span>
|
||
<span class="s1"> AS SELECT col1 AS typ_col</span>
|
||
<span class="s1"> FROM fr_wh_SQL_info </span>
|
||
<span class="s1"> WHERE FALSE'</span><span class="w"> </span><span class="p">;</span>
|
||
|
||
<span class="w"> </span><span class="k">EXECUTE</span><span class="w"> </span><span class="k">IMMEDIATE</span><span class="w"> </span><span class="s1">'DROP TABLE IF EXISTS fr_wh_SQL; </span>
|
||
<span class="s1"> CREATE LOCAL TEMPORARY TABLE fr_wh_SQL </span>
|
||
<span class="s1"> ON COMMIT PRESERVE ROWS AS </span>
|
||
<span class="s1"> AS SELECT *, CAST(NULL AS INT) AS typ_idx_col </span>
|
||
<span class="s1"> FROM mig_fr_wh_SQL_info_type </span>
|
||
<span class="s1"> WHERE FALSE'</span><span class="p">;</span>
|
||
<span class="err">…</span>
|
||
</pre></div></td></tr></table></div>
|
||
|
||
</div>
|
||
<div class="section" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_section1355312910158"><h4 class="sectiontitle">EXTEND</h4><p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p18571134471512"><span id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_text931942962012">GaussDB(DWS)</span> supports keyword <strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_b1435717187446">EXTEND</strong>.</p>
|
||
<div class="p" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p0345353398"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b563127111410">Input - Extend</strong><pre class="screen" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen748995918169">FUNCTION FUNC_EXTEND ( in_str IN VARCHAR2)
|
||
RETURN ARRYTYPE
|
||
AS
|
||
v_count2 INTEGER;
|
||
v_strlist arrytype;
|
||
v_node VARCHAR2 (2000);
|
||
BEGIN
|
||
v_count2 := 0;
|
||
v_strlist := arrytype ();
|
||
FOR v_i IN 1 .. LENGTH (in_str)
|
||
LOOP
|
||
IF v_node IS NULL
|
||
THEN
|
||
v_node := '';
|
||
END IF;
|
||
|
||
IF (v_count2 = 0) OR (v_count2 IS NULL)
|
||
THEN
|
||
EXIT;
|
||
ELSE
|
||
v_strlist.EXTEND ();
|
||
v_strlist (v_i) := v_node;
|
||
v_node := '';
|
||
END IF;
|
||
END LOOP;
|
||
|
||
RETURN v_strlist;
|
||
END;
|
||
/</pre>
|
||
</div>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p7573174441515"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b1163277101413">Output</strong></p>
|
||
<pre class="screen" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen134331417191711">FUNCTION FUNC_EXTEND ( in_str IN VARCHAR2 )
|
||
RETURN ARRYTYPE AS v_count2 INTEGER ;
|
||
v_strlist arrytype ;
|
||
v_node VARCHAR2 ( 2000 ) ;
|
||
BEGIN
|
||
v_count2 := 0 ;
|
||
v_strlist := arrytype ( ) ;
|
||
FOR v_i IN 1.. LENGTH( in_str ) LOOP
|
||
IF
|
||
v_node IS NULL
|
||
THEN
|
||
v_node := '' ;
|
||
END IF ;
|
||
IF
|
||
( v_count2 = 0 )
|
||
OR( v_count2 IS NULL )
|
||
THEN
|
||
EXIT ;
|
||
ELSE
|
||
v_strlist.EXTEND ( 1 ) ;
|
||
v_strlist ( v_i ) := v_node ;
|
||
v_node := '' ;
|
||
END IF ;
|
||
END LOOP ;
|
||
RETURN v_strlist ;
|
||
END ;
|
||
/</pre>
|
||
</div>
|
||
<div class="section" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_section19755641143617"><h4 class="sectiontitle">RECORD</h4><p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p27687220111">The Record type declared in the package specification is actually used in the corresponding package body.</p>
|
||
</div>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p7941144114368">After <strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_b41181546145416">plsqlCollection </strong>is set to varray, UDT will be migrated as VARRY.</p>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p14941341123617"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_b15605860551">Input – RECORD</strong></p>
|
||
<pre class="screen" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen8942441183614">CREATE OR REPLACE FUNCTION func1 (i1 INT)
|
||
RETURN INT
|
||
As
|
||
TYPE r_rthpagat_list IS RECORD (--Record information about cross-border RMB business parameters (rthpagat)
|
||
rthpagat_REQUESTID RMTS_REMITTANCE_PARAM.REQUESTID%TYPE ,rthpagat_PARAMTNAME RMTS_REMITTANCE_PARAM.PARAMTNAME%TYPE ,rthpagat_PARAMNUM RMTS_REMITTANCE_PARAM.PARAMNUM%TYPE ,rthpagat_PARAMSTAT RMTS_REMITTANCE_PARAM.PARAMSTAT%TYPE ,rthpagat_REQTELLERNO RMTS_REMITTANCE_PARAM.REQTELLERNO%TYPE ,rthpagat_REQUESTTIME RMTS_REMITTANCE_PARAM.REQUESTTIME%TYPE ,rthpagat_HOSTERRNO RMTS_REMITTANCE_PARAM.HOSTERRNO%TYPE ,rthpagat_HOSTERRMSG RMTS_REMITTANCE_PARAM.HOSTERRMSG%TYPE ,rthpagat_GATBANK RMTS_REMITTANCE_PARAM.VALUE1%TYPE ,rthpagat_GATEEBANK RMTS_REMITTANCE_PARAM.VALUE2%TYPE ,rthpagat_TELLER RMTS_REMITTANCE_PARAM.VALUE3%TYPE ,rthpagat_DATE RMTS_REMITTANCE_PARAM.VALUE4%TYPE ,rthpagat_BM_GATBANK RMTS_REMITTANCE_PARAM.VALUE5%TYPE ,rthpagat_BM_GATEEBANK RMTS_REMITTANCE_PARAM.VALUE6%TYPE ,rthpagat_BM_LMTEL RMTS_REMITTANCE_PARAM.VALUE7%TYPE ,rthpagat_BM_LMDAT RMTS_REMITTANCE_PARAM.VALUE8%TYPE ) ;
|
||
|
||
v1 r_rthpagat_list;
|
||
BEGIN
|
||
|
||
END;
|
||
/</pre>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p2942541193612"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_b506472582">Output</strong></p>
|
||
<pre class="screen" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen15943184153611">CREATE
|
||
TYPE rmts_remitparammgmt_rthpagat.r_rthpagat_list AS (/* O_ERRMSG error description */
|
||
Rthpagat_REQUESTID
|
||
rthpagat_REQUESTID RMTS_REMITTANCE_PARAM.REQUESTID%TYPE ,rthpagat_PARAMTNAME RMTS_REMITTANCE_PARAM.PARAMTNAME%TYPE ,rthpagat_PARAMNUM RMTS_REMITTANCE_PARAM.PARAMNUM%TYPE ,rthpagat_PARAMSTAT RMTS_REMITTANCE_PARAM.PARAMSTAT%TYPE ,rthpagat_REQTELLERNO RMTS_REMITTANCE_PARAM.REQTELLERNO%TYPE ,rthpagat_REQUESTTIME RMTS_REMITTANCE_PARAM.REQUESTTIME%TYPE ,rthpagat_HOSTERRNO RMTS_REMITTANCE_PARAM.HOSTERRNO%TYPE ,rthpagat_HOSTERRMSG RMTS_REMITTANCE_PARAM.HOSTERRMSG%TYPE ,rthpagat_GATBANK RMTS_REMITTANCE_PARAM.VALUE1%TYPE ,rthpagat_GATEEBANK RMTS_REMITTANCE_PARAM.VALUE2%TYPE ,rthpagat_TELLER RMTS_REMITTANCE_PARAM.VALUE3%TYPE ,rthpagat_DATE RMTS_REMITTANCE_PARAM.VALUE4%TYPE ,rthpagat_BM_GATBANK RMTS_REMITTANCE_PARAM.VALUE5%TYPE ,rthpagat_BM_GATEEBANK RMTS_REMITTANCE_PARAM.VALUE6%TYPE ,rthpagat_BM_LMTEL RMTS_REMITTANCE_PARAM.VALUE7%TYPE ,rthpagat_BM_LMDAT RMTS_REMITTANCE_PARAM.VALUE8%TYPE ) ;
|
||
|
||
CREATE OR REPLACE FUNCTION func1 (i1 INT)
|
||
RETURN INT
|
||
AS
|
||
v1 r_rthpagat_list;
|
||
BEGIN
|
||
|
||
END;
|
||
/</pre>
|
||
<div class="section" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_section317601214204"><h4 class="sectiontitle">Naming Convention of Type Name</h4><p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p13363845182012">User-defined types allow for the definition of data types that model the structure and behavior of the data in an application.</p>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p1157218433215"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b599510033311">Input</strong></p>
|
||
<pre class="screen" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen1988016963310">CREATE
|
||
TYPE t_line AS ( product_line VARCHAR2 ( 30 )
|
||
,product_amount NUMBER ) ;
|
||
;</pre>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p181439593214"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b1395535783419">Output</strong></p>
|
||
<pre class="screen" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen18804194013510">CREATE
|
||
TYPE sad_dml_product_pkg.t_line AS ( product_line VARCHAR2 ( 30 )
|
||
,product_amount NUMBER ) ;</pre>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p1068100143517"></p>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p02612347222"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b337714012228">Input</strong></p>
|
||
<pre class="screen" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen18851112112219">CREATE
|
||
TYPE t_line AS ( product_line VARCHAR2 ( 30 )
|
||
,product_amount NUMBER ) ;</pre>
|
||
</div>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p1520851272016"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b1987944236">Output</strong></p>
|
||
<pre class="screen" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen616661002310">CREATE
|
||
TYPE SAD.sad_dml_product_pkg#t_line AS ( product_line VARCHAR2 ( 30 )
|
||
,product_amount NUMBER ) ;</pre>
|
||
<div class="note" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_note929623062316"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><ul id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_ul639979134714"><li id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_li165295334471">For the first output(pkg.t),if <strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b54364217229">pkgSchemaNaming</strong> is set to <strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b112053337222">true</strong> in the configuration, PL RECORD migration should have package name as a schema name along with a type name.</li><li id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_li439916954718">For the second output (pkg#t), assume that TYPE belongs to sad_dml_product_pkg package.</li></ul>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p371014217132">If <strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b57227212241">pkgSchemaNaming</strong> is set to<strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b1271995110231"> false</strong> in the configuration, PL RECORD migration should have schema name as a schema name along with a package name + a type name separated by # as a type name.</p>
|
||
</div></div>
|
||
<div class="section" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_section4981341461"><h4 class="sectiontitle">SUBTYPE</h4><p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p660775416466">With the SUBTYPE statement, PL/SQL allows you to define your own subtypes or aliases of predefined datatypes, sometimes referred to as abstract datatypes.</p>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p1427444215475"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b10463184754719">Input</strong></p>
|
||
<pre class="screen" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen12581632104710">CREATE OR REPLACE PACKAGE "SAD"."BAS_SUBTYPE_PKG" IS
|
||
SUBTYPE CURRENCY IS BAS_PRICE_LIST_T.CURRENCY%TYPE;
|
||
END bas_subtype_pkg;
|
||
/
|
||
CREATE OR REPLACE PACKAGE BODY "SAD"."BAS_SUBTYPE_PKG" IS
|
||
BEGIN
|
||
NULL;
|
||
END bas_subtype_pkg;
|
||
/
|
||
--********************************************************************
|
||
CREATE OR REPLACE PACKAGE BODY SAD.bas_lookup_misc_pkg IS
|
||
FUNCTION get_currency(pi_price_type IN NUMBER) RETURN VARCHAR2 IS
|
||
v_currency bas_subtype_pkg.currency;
|
||
BEGIN
|
||
g_func_name := 'get_currency';
|
||
FOR rec_currency IN (SELECT currency FROM sad_price_type_v WHERE price_type_code = pi_price_type)
|
||
LOOP
|
||
v_currency := rec_currency.currency;
|
||
END LOOP;
|
||
RETURN v_currency;
|
||
END get_currency;
|
||
END SAD.bas_lookup_misc_pkg;
|
||
/</pre>
|
||
</div>
|
||
<p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p9208181242012"><strong id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0237712372_b1891165624711">Output</strong></p>
|
||
<pre class="screen" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_screen8858117523"> CREATE OR REPLACE FUNCTION SAD.bas_lookup_misc_pk#get_currency(pi_price_type IN NUMBER) RETURN VARCHAR2 IS
|
||
v_currency BAS_PRICE_LIST_T.CURRENCY%TYPE;
|
||
BEGIN
|
||
g_func_name := 'get_currency';
|
||
FOR rec_currency IN (SELECT currency FROM sad_price_type_v WHERE price_type_code = pi_price_type)
|
||
LOOP
|
||
v_currency := rec_currency.currency;
|
||
END LOOP;
|
||
RETURN v_currency;
|
||
END ;
|
||
/</pre>
|
||
<div class="note" id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_note1455752112526"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001819416333__en-us_topic_0000001706104865_en-us_topic_0238518403_en-us_topic_0237362508_en-us_topic_0202727309_p115581621165215">As SUBTYPE is not supported in GaussDB, the SUBTYPE variable needs to be replaced with the actual type.</p>
|
||
</div></div>
|
||
</div>
|
||
<div>
|
||
<div class="familylinks">
|
||
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_mt_0104.html">Oracle Syntax Migration</a></div>
|
||
</div>
|
||
</div>
|
||
|