forked from docs/doc-exports
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>
156 lines
18 KiB
HTML
156 lines
18 KiB
HTML
<a name="EN-US_TOPIC_0000001233628611"></a><a name="EN-US_TOPIC_0000001233628611"></a>
|
|
|
|
<h1 class="topictitle1">CALL</h1>
|
|
<div id="body8662426"><div class="section" id="EN-US_TOPIC_0000001233628611__s15629145a18c4b82a05c951b4c5fc2e2"><h4 class="sectiontitle">Function</h4><p id="EN-US_TOPIC_0000001233628611__a47f998f934404403b326c881e35849ef"><strong id="EN-US_TOPIC_0000001233628611__b1213283943415">CALL</strong> calls defined functions or stored procedures.</p>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233628611__s4a3d6f9d884744ec9cb831d8c8e3bc69"><h4 class="sectiontitle">Precautions</h4><p id="EN-US_TOPIC_0000001233628611__p137741250163011">If the name of a user-defined function is the same as that of a system function, you need to specify a schema when invoking the user-defined function. Otherwise, the system preferentially invokes the system function.</p>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233628611__s7fc340df289c4d5a8efddb577cacc516"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233628611__s707f1a31e00f4272b6d11922b0ac13c3"><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">CALL</span><span class="w"> </span><span class="p">[</span><span class="k">schema</span><span class="p">.]</span><span class="w"> </span><span class="err">{</span><span class="n">func_name</span><span class="o">|</span><span class="w"> </span><span class="n">procedure_name</span><span class="err">}</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">param_expr</span><span class="w"> </span><span class="p">);</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233628611__s5adb040eb0df43148659dda025899832"><h4 class="sectiontitle">Parameter Description</h4><ul id="EN-US_TOPIC_0000001233628611__uf35c83843d4c44cb9e897f68818ad8b1"><li id="EN-US_TOPIC_0000001233628611__l1a213bb9ce9c45cebd82ad047c23f0c2"><strong id="EN-US_TOPIC_0000001233628611__aa65ea12db6954472819fe339004e0d93">schema</strong><p id="EN-US_TOPIC_0000001233628611__a14a090ab4c8d4f65ace8b3db8fe82550">Specifies the name of the schema where a function or stored procedure is located.</p>
|
|
</li><li id="EN-US_TOPIC_0000001233628611__lb069d96d35b24432a5555e4fbc9c75ae"><strong id="EN-US_TOPIC_0000001233628611__a9597dab42edc42669a8aa1733602ca6b">func_name</strong><p id="EN-US_TOPIC_0000001233628611__ab6566303aa384c3c9030052b4e26fee8">Specifies the name of the function or stored procedure to be called.</p>
|
|
<p id="EN-US_TOPIC_0000001233628611__ac2739921be29463daafe448d82ac05c7">Value range: an existing function name</p>
|
|
</li><li id="EN-US_TOPIC_0000001233628611__lf70b1569d54a4cf4a02dca2188b756ab"><strong id="EN-US_TOPIC_0000001233628611__afdf14a40bc774b23981ebc7a4414ea6b">param_expr</strong><p id="EN-US_TOPIC_0000001233628611__ad0624f22bf0c4c83b9dbd4578ddf9524">Specifies a list of parameters in the function. Use <strong id="EN-US_TOPIC_0000001233628611__b84235270691227">:=</strong> or <strong id="EN-US_TOPIC_0000001233628611__b84235270691231">=></strong> to separate a parameter name and its value. This method allows parameters to be placed in any order. If only parameter values are in the list, the value order must be the same as that defined in the function or stored procedure.</p>
|
|
<p id="EN-US_TOPIC_0000001233628611__aa8abe7f2e5ab4532b7b3c99e83289a25">Value range: names of existing function or stored procedure parameters</p>
|
|
<div class="note" id="EN-US_TOPIC_0000001233628611__n7a143b54bbc14f4f9a2e4442325f3cd6"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001233628611__aa12355c41d3b4364a5c1c1c706701058">The parameters include input parameters (whose name and type are separated by <strong id="EN-US_TOPIC_0000001233628611__b97452310333426">IN</strong>) and output parameters (whose name and type are separated by <strong id="EN-US_TOPIC_0000001233628611__b142268821133426">OUT</strong>). When you run the <strong id="EN-US_TOPIC_0000001233628611__b111885582733426">CALL</strong> statement to call a function or stored procedure, the parameter list must contain an output parameter for non-overloaded functions. You can set the output parameter to a variable or any constant. For details, see <a href="#EN-US_TOPIC_0000001233628611__s573ee29c39fc4f11b27b21a603ec6b59">Examples</a>. For an overloaded package function, the parameter list can have no output parameter, but the function may not be found. If an output parameter is contained, it must be a constant.</p>
|
|
</div></div>
|
|
</li></ul>
|
|
</div>
|
|
<div class="section" id="EN-US_TOPIC_0000001233628611__s573ee29c39fc4f11b27b21a603ec6b59"><a name="EN-US_TOPIC_0000001233628611__s573ee29c39fc4f11b27b21a603ec6b59"></a><a name="s573ee29c39fc4f11b27b21a603ec6b59"></a><h4 class="sectiontitle">Examples</h4><p id="EN-US_TOPIC_0000001233628611__p12807193817820">Create the <strong id="EN-US_TOPIC_0000001233628611__b72972668933426">func_add_sql</strong> function to compute the sum of two integers and return the result:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233628611__screen191469485810"><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">CREATE</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">func_add_sql</span><span class="p">(</span><span class="n">num1</span><span class="w"> </span><span class="nb">integer</span><span class="p">,</span><span class="w"> </span><span class="n">num2</span><span class="w"> </span><span class="nb">integer</span><span class="p">)</span><span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="nb">integer</span>
|
|
<span class="k">AS</span>
|
|
<span class="k">BEGIN</span>
|
|
<span class="k">RETURN</span><span class="w"> </span><span class="n">num1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">num2</span><span class="p">;</span>
|
|
<span class="k">END</span><span class="p">;</span>
|
|
<span class="o">/</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233628611__p148078389814">Transfer based on parameter values:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233628611__screen927813553810"><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">CALL</span><span class="w"> </span><span class="n">func_add_sql</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233628611__p6807238189">Transfer based on the naming flags:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233628611__screen17133247911"><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">CALL</span><span class="w"> </span><span class="n">func_add_sql</span><span class="p">(</span><span class="n">num1</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="n">num2</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
|
|
<span class="k">CALL</span><span class="w"> </span><span class="n">func_add_sql</span><span class="p">(</span><span class="n">num2</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">num1</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233628611__p0807438286">Delete a function:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233628611__screen1358118121797"><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">DROP</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">func_add_sql</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233628611__p68070386818">Create a function with output parameters:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233628611__screen1849092114919"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">func_increment_sql</span><span class="p">(</span><span class="n">num1</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="nb">integer</span><span class="p">,</span><span class="w"> </span><span class="n">num2</span><span class="w"> </span><span class="k">IN</span><span class="w"> </span><span class="nb">integer</span><span class="p">,</span><span class="w"> </span><span class="n">res</span><span class="w"> </span><span class="k">OUT</span><span class="w"> </span><span class="nb">integer</span><span class="p">)</span>
|
|
<span class="k">RETURN</span><span class="w"> </span><span class="nb">integer</span>
|
|
<span class="k">AS</span>
|
|
<span class="k">BEGIN</span>
|
|
<span class="n">res</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="n">num1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">num2</span><span class="p">;</span>
|
|
<span class="k">END</span><span class="p">;</span>
|
|
<span class="o">/</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233628611__p1680653811815">Set output parameters to constants:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233628611__screen1997473019918"><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">CALL</span><span class="w"> </span><span class="n">func_increment_sql</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">);</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233628611__p2806173811819">Set output parameters to variables:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233628611__screen9373739191"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">DECLARE</span>
|
|
<span class="n">res</span><span class="w"> </span><span class="nb">int</span><span class="p">;</span>
|
|
<span class="k">BEGIN</span>
|
|
<span class="n">func_increment_sql</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">res</span><span class="p">);</span>
|
|
<span class="n">dbms_output</span><span class="p">.</span><span class="n">put_line</span><span class="p">(</span><span class="n">res</span><span class="p">);</span>
|
|
<span class="k">END</span><span class="p">;</span>
|
|
<span class="o">/</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233628611__p1780617381813">Create overloaded functions:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233628611__screen3400449498"><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">package_func_overload</span><span class="p">(</span><span class="n">col</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="n">col2</span><span class="w"> </span><span class="k">out</span><span class="w"> </span><span class="nb">int</span><span class="p">)</span><span class="w"> </span><span class="n">package</span>
|
|
<span class="k">as</span>
|
|
<span class="k">declare</span>
|
|
<span class="w"> </span><span class="n">col_type</span><span class="w"> </span><span class="nb">text</span><span class="p">;</span>
|
|
<span class="k">begin</span>
|
|
<span class="w"> </span><span class="n">col</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="mi">122</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="n">dbms_output</span><span class="p">.</span><span class="n">put_line</span><span class="p">(</span><span class="s1">'two out parameters '</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">col2</span><span class="p">);</span>
|
|
<span class="k">end</span><span class="p">;</span>
|
|
<span class="o">/</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233628611__screen206852561097"><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></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">package_func_overload</span><span class="p">(</span><span class="n">col</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="n">col2</span><span class="w"> </span><span class="k">out</span><span class="w"> </span><span class="nb">varchar</span><span class="p">)</span>
|
|
<span class="n">package</span>
|
|
<span class="k">as</span>
|
|
<span class="k">declare</span>
|
|
<span class="w"> </span><span class="n">col_type</span><span class="w"> </span><span class="nb">text</span><span class="p">;</span>
|
|
<span class="k">begin</span>
|
|
<span class="w"> </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">'122'</span><span class="p">;</span>
|
|
<span class="w"> </span><span class="n">dbms_output</span><span class="p">.</span><span class="n">put_line</span><span class="p">(</span><span class="s1">'two varchar parameters '</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">col2</span><span class="p">);</span>
|
|
<span class="k">end</span><span class="p">;</span>
|
|
<span class="o">/</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233628611__p158067385819">Call a function:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233628611__screen1182424171017"><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">call</span><span class="w"> </span><span class="n">package_func_overload</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'test'</span><span class="p">);</span><span class="w"> </span>
|
|
<span class="k">call</span><span class="w"> </span><span class="n">package_func_overload</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span><span class="w"> </span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<p id="EN-US_TOPIC_0000001233628611__p6805638383">Delete a function:</p>
|
|
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233628611__screen1828661431013"><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">DROP</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">func_increment_sql</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0227.html">DML Syntax</a></div>
|
|
</div>
|
|
</div>
|
|
|