doc-exports/docs/dws/tool/dws_mt_0155.html
Lu, Huayi 27019c2991 DWS TOOL 830.201 version
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>
2024-05-16 07:35:25 +00:00

436 lines
46 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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">&lt;</span><span class="k">OR</span><span class="w"> </span><span class="k">REPLACE</span><span class="o">&gt;</span><span class="w"> </span><span class="k">TYPE</span><span class="w"> </span><span class="o">&lt;</span><span class="k">schema</span><span class="p">.</span><span class="o">&gt;</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">&lt;</span><span class="k">schema</span><span class="p">.</span><span class="o">&gt;</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">&lt;</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">&gt;</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 &lt;:= inst_no_type()&gt;; */</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>