doc-exports/docs/dws/dev/dws_06_0126.html
Lu, Huayi e6fa411af0 DWS DEV 830.201 version
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:24:04 +00:00

146 lines
30 KiB
HTML

<a name="EN-US_TOPIC_0000001188110550"></a><a name="EN-US_TOPIC_0000001188110550"></a>
<h1 class="topictitle1">ALTER FUNCTION</h1>
<div id="body8662426"><div class="section" id="EN-US_TOPIC_0000001188110550__s0213cde7e4d84cf2aff83d6897cb4160"><h4 class="sectiontitle">Function</h4><p id="EN-US_TOPIC_0000001188110550__aef5d0abc6f274e17803b890a3b4445a4"><strong id="EN-US_TOPIC_0000001188110550__b7389144719211">ALTER FUNCTION</strong> modifies the attributes of a customized function.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000001188110550__s29e588dc38964f9a9933c5bebd443033"><h4 class="sectiontitle">Precautions</h4><p id="EN-US_TOPIC_0000001188110550__p21666797145042">Only the owner of a function or a system administrator can run this statement. The user who wants to change the owner of a function must be a direct or indirect member of the new owner role. If a function involves operations on temporary tables, the <strong id="EN-US_TOPIC_0000001188110550__b1817181193715">ALTER FUNCTION</strong> cannot be used.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000001188110550__s6e9c663e91684282b6f7697549b3e2f8"><h4 class="sectiontitle">Syntax</h4><ul id="EN-US_TOPIC_0000001188110550__ude82242444ad4d8c9b91b9c8cb7c33fc"><li id="EN-US_TOPIC_0000001188110550__ld4ace1a4b6694dbd9c34b1846b7c7786">Modify the additional parameter of the customized function:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110550__sefe31fbc90fb40de90df06912cae5b67"><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">ALTER</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">function_name</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="n">argmode</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="n">argname</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="n">argtype</span><span class="err">}</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span>
<span class="w"> </span><span class="n">action</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">RESTRICT</span><span class="w"> </span><span class="p">];</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001188110550__ab4621c803f174190ae843c657146696d">The syntax of the <strong id="EN-US_TOPIC_0000001188110550__b84235270621107">action</strong> clause is as follows:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110550__s796b61c9112a47e79d78a544591208ad"><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></pre></div></td><td class="code"><div><pre><span></span><span class="err">{</span><span class="k">CALLED</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">NULL</span><span class="w"> </span><span class="k">INPUT</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">RETURNS</span><span class="w"> </span><span class="k">NULL</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">NULL</span><span class="w"> </span><span class="k">INPUT</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">STRICT</span><span class="err">}</span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="k">IMMUTABLE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">STABLE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">VOLATILE</span><span class="err">}</span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="n">SHIPPABLE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="n">SHIPPABLE</span><span class="err">}</span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="k">NOT</span><span class="w"> </span><span class="n">FENCED</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">FENCED</span><span class="err">}</span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="n">LEAKPROOF</span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">EXTERNAL</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="k">SECURITY</span><span class="w"> </span><span class="k">INVOKER</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">EXTERNAL</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="k">SECURITY</span><span class="w"> </span><span class="k">DEFINER</span><span class="w"> </span><span class="err">}</span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">AUTHID</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="k">DEFINER</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">CURRENT_USER</span><span class="w"> </span><span class="err">}</span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">COST</span><span class="w"> </span><span class="n">execution_cost</span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="n">result_rows</span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">configuration_parameter</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="n">value</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="err">}</span><span class="o">|</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">CURRENT</span><span class="err">}</span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">RESET</span><span class="w"> </span><span class="err">{</span><span class="n">configuration_parameter</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">ALL</span><span class="err">}</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001188110550__l2fb90f492c5740158af6e305f1865c65">Modify the name of the customized function:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110550__s128502a3a38a4dd492418e8db8118daf"><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">ALTER</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">funname</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="n">argmode</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="n">argname</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="n">argtype</span><span class="err">}</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span>
<span class="w"> </span><span class="k">RENAME</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="n">new_name</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001188110550__l833620e488254177ba498fd25a468504">Modify the owner of the customized function:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110550__s6a99f639f9b54f53ad172d871e30371a"><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">ALTER</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">funname</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="n">argmode</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="n">argname</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="n">argtype</span><span class="err">}</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span>
<span class="w"> </span><span class="k">OWNER</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="n">new_owner</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001188110550__lc82ed64fc791417db5ccbfae28210a1a">Modify the schema of the customized function:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110550__s9b6407b967524a17aed2166e5b0d238c"><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">ALTER</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">funname</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="n">argmode</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="n">argname</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="n">argtype</span><span class="err">}</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)</span>
<span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="k">SCHEMA</span><span class="w"> </span><span class="n">new_schema</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001188110550__s1d8efaf4663848839cccbe6992e74a57"><h4 class="sectiontitle">Parameter Description</h4><ul id="EN-US_TOPIC_0000001188110550__u81c4e8b7351b4779a41d6c031cbb9486"><li id="EN-US_TOPIC_0000001188110550__le4836f02ff8d44138ccbfb9453e3880d"><strong id="EN-US_TOPIC_0000001188110550__ae263799f45c74592b446940bba891a4f">function_name</strong><p id="EN-US_TOPIC_0000001188110550__ab04fb4f83e134b4082b8daf6495fa626">Specifies the function name to be modified.</p>
<p id="EN-US_TOPIC_0000001188110550__a3d1677a2f3e34cc79f59c77d1a719c42">Value range: An existing function name.</p>
</li><li id="EN-US_TOPIC_0000001188110550__l7fd84b6669964ff68b78d99b8ad9c231"><strong id="EN-US_TOPIC_0000001188110550__a404a9b8728f643e2835495d2be8b300f">argmode</strong><p id="EN-US_TOPIC_0000001188110550__a780fc2fa12194385a8fc47717764a660">Specifies whether a parameter is an input or output parameter.</p>
<p id="EN-US_TOPIC_0000001188110550__a84055016b9544df38926b6cbdf376997">Value range: <strong id="EN-US_TOPIC_0000001188110550__b8236467103734">IN</strong>, <strong id="EN-US_TOPIC_0000001188110550__b63174119103734">OUT</strong>, <strong id="EN-US_TOPIC_0000001188110550__b16830015103734">IN OUT</strong></p>
</li><li id="EN-US_TOPIC_0000001188110550__l15f483275cb941619257e41f9d55e810"><strong id="EN-US_TOPIC_0000001188110550__a37c0e604117040eea868fdf53c9192a6">argname</strong><p id="EN-US_TOPIC_0000001188110550__a7560315719cf4f34afee789f6f9601a4">Indicates the parameter name.</p>
<p id="EN-US_TOPIC_0000001188110550__a576a2c80b4334a9c8d6051a4816a5bf0">Value range: A string. It must comply with the naming convention.</p>
</li><li id="EN-US_TOPIC_0000001188110550__l92bd41f1e2504eb99ca8a94f436be4b7"><strong id="EN-US_TOPIC_0000001188110550__a5b20aa7e4efa4a3d8716ee75dd9c4169">argtype</strong><p id="EN-US_TOPIC_0000001188110550__aefd88ce46b6f446785f87b2e7ee7e43f">Specifies the parameter type.</p>
<p id="EN-US_TOPIC_0000001188110550__adb055c3fb9804cab855a0b9702cf7122">Value range: A valid type. For details, see <a href="dws_06_0008.html">Data Types</a>.</p>
</li><li id="EN-US_TOPIC_0000001188110550__l8db5ba3f06dc4c8195cd2139a8045f73"><strong id="EN-US_TOPIC_0000001188110550__a290e7f00988840d4a031ff510ecb773a">CALLED ON NULL INPUT</strong><p id="EN-US_TOPIC_0000001188110550__a96bae6cb981a40ca9a829fcd89702b6b">Declares that some parameters of the function can be invoked in normal mode if the parameter values are <strong id="EN-US_TOPIC_0000001188110550__b140546266017272">NULL</strong>. By default, the usage is the same as specifying the parameters.</p>
</li><li id="EN-US_TOPIC_0000001188110550__l81ba887b59d546cfaac0a2cb67c3f92f"><strong id="EN-US_TOPIC_0000001188110550__ad8aa0e58c1fe4c85a275358d48e293ff">RETURNS NULL ON NULL INPUT</strong><p id="EN-US_TOPIC_0000001188110550__aa1fb4219ebd947e0a8fa8fe38d8d195b"><strong id="EN-US_TOPIC_0000001188110550__a15e228e74cb2446c8d8110a33e7bc0d9">STRICT</strong></p>
<p id="EN-US_TOPIC_0000001188110550__a4178d62204994b1aad7b596832fc56da">Indicates that the function always returns <strong id="EN-US_TOPIC_0000001188110550__b595248359421">NULL</strong> whenever any of its arguments are <strong id="EN-US_TOPIC_0000001188110550__b659614749421">NULL</strong>. If this parameter is specified, the function is not executed when there are null arguments; instead a null result is assumed automatically.</p>
<p id="EN-US_TOPIC_0000001188110550__a914b6f3c60d2410daf1bb5a742e4292f">The usage of <strong id="EN-US_TOPIC_0000001188110550__b544294742115">RETURNS NULL ON NULL INPUT</strong> is the same as that of <strong id="EN-US_TOPIC_0000001188110550__b8443847142116">STRICT</strong>.</p>
</li><li id="EN-US_TOPIC_0000001188110550__l46028f7c3d714aa6888c8b5c4a531753"><strong id="EN-US_TOPIC_0000001188110550__abacbf523363c42a580cb42fb4bebe0ac">IMMUTABLE</strong><p id="EN-US_TOPIC_0000001188110550__a3256390bcf6b42b9bb878dabc40cf26f">Indicates that the function always returns the same result if the parameter values are the same.</p>
</li><li id="EN-US_TOPIC_0000001188110550__l2068b0ea17624c9b81f959aaaa38c1f4"><strong id="EN-US_TOPIC_0000001188110550__aba2b09f5864642c88091bee7d7b56984">STABLE</strong><p id="EN-US_TOPIC_0000001188110550__a937add02f9ff42788bb7faea9408e15c">Indicates that the function cannot modify the database, and that within a single table scan it will consistently return the same result for the same parameter values, but that its result varies by SQL statements.</p>
</li><li id="EN-US_TOPIC_0000001188110550__lbe364bf39fb644e8b2748cbd871a9917"><strong id="EN-US_TOPIC_0000001188110550__ad4549a384f3e46aca3149a6b89c32ed6">VOLATILE</strong><p id="EN-US_TOPIC_0000001188110550__aad0926cbddec4cf7b9147fbfad091552">Indicates that the function value can change in one table scanning and no optimization is performed.</p>
</li><li id="EN-US_TOPIC_0000001188110550__li11812123132615"><strong id="EN-US_TOPIC_0000001188110550__b168441114182618">SHIPPABLE</strong><p id="EN-US_TOPIC_0000001188110550__p1768723112312"><strong id="EN-US_TOPIC_0000001188110550__b4516519192613">NOT SHIPPABLE</strong></p>
<p id="EN-US_TOPIC_0000001188110550__p45941435258">Indicates whether the function can be pushed down to DNs for execution.</p>
<ul id="EN-US_TOPIC_0000001188110550__ul1680264292310"><li id="EN-US_TOPIC_0000001188110550__li2905541202314">Functions of the IMMUTABLE type can always be pushed down to the DNs.</li><li id="EN-US_TOPIC_0000001188110550__li3907134113235">Functions of the STABLE or VOLATILE type can be pushed down to DNs only if their attribute is <strong id="EN-US_TOPIC_0000001188110550__b86569481074">SHIPPABLE</strong>.</li></ul>
</li><li id="EN-US_TOPIC_0000001188110550__l6cd380b6005d4032b10f3f060f0825f4"><strong id="EN-US_TOPIC_0000001188110550__a4e7e94720584478eb8ce2a7578ec2e72">LEAKPROOF</strong><p id="EN-US_TOPIC_0000001188110550__aec107291a1cf48ef8d373e83f9dd5580">Indicates that the function has no side effect and specifies that the parameter includes only the returned value. <strong id="EN-US_TOPIC_0000001188110550__b146481281708">LEAKPROOF</strong> can be set only by a system administrator.</p>
</li><li id="EN-US_TOPIC_0000001188110550__lf3b07dc713b54914a5792ac37194a5a0">(Optional) <strong id="EN-US_TOPIC_0000001188110550__b1297432151013">EXTERNAL</strong><p id="EN-US_TOPIC_0000001188110550__a881aa3a13193412f8a56ffb9b3017a90">The objective is to be compatible with SQL. This feature applies to all functions, including external functions.</p>
</li><li id="EN-US_TOPIC_0000001188110550__l1394f86001004c7ebeb6ef34c8c48ceb"><strong id="EN-US_TOPIC_0000001188110550__a345e80c3cd2a4a05a51bdaa5e9c5fa01">SECURITY INVOKER</strong><p id="EN-US_TOPIC_0000001188110550__ae7b192e2386042c183e267613c5a40b5"><strong id="EN-US_TOPIC_0000001188110550__ade749d88dce94428b9dbc3cc11556d5c">AUTHID CURREN_USER</strong></p>
<p id="EN-US_TOPIC_0000001188110550__a253a069e13404bf99f3e2d324eba57a1">Declares that the function will be executed according to the permission of the user that invokes it. By default, the usage is the same as specifying the parameters.</p>
<p id="EN-US_TOPIC_0000001188110550__a73ff151a00134bbc8460979abe9ef300"><strong id="EN-US_TOPIC_0000001188110550__b66388649421">SECURITY INVOKER</strong> and <strong id="EN-US_TOPIC_0000001188110550__b597497839421">AUTHID CURREN_USER</strong> have the same functions.</p>
</li><li id="EN-US_TOPIC_0000001188110550__l26d38a9d1cd34d629383556559a0a60e"><strong id="EN-US_TOPIC_0000001188110550__aceb6e625a0614153a6d555b071ddb88a">SECURITY DEFINER</strong><p id="EN-US_TOPIC_0000001188110550__a5534db2c0eff48ccb2af5ec27258567e"><strong id="EN-US_TOPIC_0000001188110550__a40b7f179899e4e00807120ba5a15d4d0">AUTHID DEFINER</strong></p>
<p id="EN-US_TOPIC_0000001188110550__a697cffd27b444526a6c6ef25b7fb7a5f">Specifies that the function is to be executed with the permissions of the user that created it.</p>
<p id="EN-US_TOPIC_0000001188110550__a089542ceb31747df8a86eeec5be69838">The usage of <strong id="EN-US_TOPIC_0000001188110550__b5296950093526">AUTHID DEFINER</strong> is the same as that of <strong id="EN-US_TOPIC_0000001188110550__b696345793526">SECURITY DEFINER</strong>.</p>
</li><li id="EN-US_TOPIC_0000001188110550__lf05c3b77fb844dc681a6996e9cd091ce"><strong id="EN-US_TOPIC_0000001188110550__a93ad5ca02386426da98a8a7688a0e6a6">COST execution_cost</strong><p id="EN-US_TOPIC_0000001188110550__a2215fb6836f44c2587f1a0bd3f034540">A positive number giving the estimated execution cost for the function.</p>
<p id="EN-US_TOPIC_0000001188110550__a897893e8ae0d41ca940e937eb3cb98c0">The unit of <strong id="EN-US_TOPIC_0000001188110550__b1801909104051">execution_cost</strong> is cpu_operator_cost.</p>
<p id="EN-US_TOPIC_0000001188110550__a0f1433740c5944ff97a42bb6a24197c8">Value range: A positive number.</p>
</li><li id="EN-US_TOPIC_0000001188110550__l2694035eb7514b0b8674a1a7499a9250"><strong id="EN-US_TOPIC_0000001188110550__a4e35a02a674648b1be283f9307bd6561">ROWS result_rows</strong><p id="EN-US_TOPIC_0000001188110550__a8cdca4f2d1ea4b44802fee7f8891090d">Estimates the number of rows returned by the function. This is only allowed when the function is declared to return a set.</p>
<p id="EN-US_TOPIC_0000001188110550__ad5df332414ba4021bf2029263a4fbdae">Value range: A positive number. The default is 1000 rows.</p>
</li><li id="EN-US_TOPIC_0000001188110550__lf7486188b82746b6b8b1bd212cebaeb7"><strong id="EN-US_TOPIC_0000001188110550__ad8efc8ddfc75407a88e0c50672d83752">configuration_parameter</strong><ul id="EN-US_TOPIC_0000001188110550__u1fc7180c8d2148449531c2f40cb31138"><li id="EN-US_TOPIC_0000001188110550__l43a2f2f982ec4a35a76f5605622be082"><strong id="EN-US_TOPIC_0000001188110550__a8e795454b0f54f84969d25cb02363f2d">value</strong><p id="EN-US_TOPIC_0000001188110550__a6859d59e07ad48b19d51ef6bcc76ecb7">Sets a specified database session parameter to a specified value. If the value is <strong id="EN-US_TOPIC_0000001188110550__b1147211475212">DEFAULT</strong> or <strong id="EN-US_TOPIC_0000001188110550__b104721747142111">RESET</strong>, the default setting is used in the new session. <strong id="EN-US_TOPIC_0000001188110550__b1747244732112">OFF</strong> closes the setting.</p>
<p id="EN-US_TOPIC_0000001188110550__a83769e27894b44979b9c7a8a4f7331f2">Value range: a string</p>
<ul id="EN-US_TOPIC_0000001188110550__u2b828e9e55d248f9a49cb42967f49d2e"><li id="EN-US_TOPIC_0000001188110550__le2103c4f820345d5ae9c1814c38314d1">DEFAULT</li><li id="EN-US_TOPIC_0000001188110550__l712e13afda8f4b139264c2062033808a">OFF</li><li id="EN-US_TOPIC_0000001188110550__lf4253174167a48dda063288370f7708a">RESET</li></ul>
<p id="EN-US_TOPIC_0000001188110550__ab917eed86710460d9f7888a521a5f32f">Specifies the default value.</p>
</li><li id="EN-US_TOPIC_0000001188110550__l4e340b2259f1405fbc611311dc307fa7"><strong id="EN-US_TOPIC_0000001188110550__a7ff05db235c943eb9da0e210dfad4b35">from current</strong><p id="EN-US_TOPIC_0000001188110550__af5fdc49c70d34b96baf07cef31c1a4fa">Uses the value of <strong id="EN-US_TOPIC_0000001188110550__b842352706205857">configuration_parameter</strong> of the current session.</p>
</li></ul>
</li><li id="EN-US_TOPIC_0000001188110550__l7ca95b227f664cc5b0bec5f1a5a67aa5"><strong id="EN-US_TOPIC_0000001188110550__a0bbe489c2a0043ca994f9eb7fada8a9b">new_name</strong><p id="EN-US_TOPIC_0000001188110550__a35c8a73e113b468886e3f33fde20b1af">Specifies the new name of a function. To change a function's schema, you must also have the CREATE permission on the new schema.</p>
<p id="EN-US_TOPIC_0000001188110550__a0f72bbf8a285413fa2d76d0bff80ba6a">Value range: A string. It must comply with the naming convention.</p>
</li><li id="EN-US_TOPIC_0000001188110550__l960c21406590416b80435ef2a6e07689"><strong id="EN-US_TOPIC_0000001188110550__ad39f35f1fcf24989b988141bf84849dd">new_owner</strong><p id="EN-US_TOPIC_0000001188110550__a6120bc9f14654797a6595c90261c73bb">Specifies the new owner of a function. To alter the owner, the new owner must also be a direct or indirect member of the new owning role, and that role must have CREATE permission on the function's schema.</p>
<p id="EN-US_TOPIC_0000001188110550__a0f9272214b0f49bbb338dc8630bbd1ee">Value range: Existing user roles.</p>
</li><li id="EN-US_TOPIC_0000001188110550__l1059beee8cd4453299332e2948129ce3"><strong id="EN-US_TOPIC_0000001188110550__a664081e4738b42cf87c224c72e1b4a48">new_schema</strong><p id="EN-US_TOPIC_0000001188110550__a0faf06028f4a4b9ea3bd76e7145f576e">Specifies the new schema of a function.</p>
<p id="EN-US_TOPIC_0000001188110550__a41ca645f0d894bcda1274a23a93dfe3f">Value range: Existing schemas.</p>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001188110550__s3e71d9f4c2284f9ea887ad45270a002d"><h4 class="sectiontitle">Example</h4><p id="EN-US_TOPIC_0000001188110550__p69781661364">Create a function that calculates the sum of two integers and returns the result. If the input is null, null will be returned.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110550__screen15571123934213"><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">DROP</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">func_add_sql2</span><span class="p">;</span><span class="w"> </span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">func_add_sql2</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="w"> </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_0000001188110550__p19199151184913">Alter the execution rule of function add to IMMUTABLE (that is, the same result is returned if the parameter remains unchanged):</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110550__screen141231842185116"><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">ALTER</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">func_add_sql2</span><span class="p">(</span><span class="nb">INTEGER</span><span class="p">,</span><span class="w"> </span><span class="nb">INTEGER</span><span class="p">)</span><span class="w"> </span><span class="k">IMMUTABLE</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001188110550__p154791658204919">Rename the <strong id="EN-US_TOPIC_0000001188110550__b49881335172719">func_add_sql2</strong> function as <strong id="EN-US_TOPIC_0000001188110550__b149903356276">add_two_number</strong>:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110550__screen13934125575116"><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">ALTER</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">func_add_sql2</span><span class="p">(</span><span class="nb">INTEGER</span><span class="p">,</span><span class="w"> </span><span class="nb">INTEGER</span><span class="p">)</span><span class="w"> </span><span class="k">RENAME</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="n">add_two_number</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001188110550__p2352143325013">Change the owner of function <strong id="EN-US_TOPIC_0000001188110550__b173892713033638">add_two_number</strong> to <strong id="EN-US_TOPIC_0000001188110550__b46599463233638"><span id="EN-US_TOPIC_0000001188110550__text19847144565017">dbadmin</span></strong>:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110550__screen1527112418525"><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">ALTER</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">add_two_number</span><span class="p">(</span><span class="nb">INTEGER</span><span class="p">,</span><span class="w"> </span><span class="nb">INTEGER</span><span class="p">)</span><span class="w"> </span><span class="k">OWNER</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="n">dbadmin</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001188110550__sfd1ea78952c04793822a35b4e92b3b63"><h4 class="sectiontitle">Helpful Links</h4><p id="EN-US_TOPIC_0000001188110550__a95e553d97d0b448aa7aaefbcbbb6cc43"><a href="dws_06_0163.html">CREATE FUNCTION</a>, <a href="dws_06_0193.html">DROP FUNCTION</a></p>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0118.html">DDL Syntax</a></div>
</div>
</div>