doc-exports/docs/dws/dev/dws_06_0176.html
Lu, Huayi a24ca60074 DWS DEVELOPER 811 version
Reviewed-by: Hasko, Vladimir <vladimir.hasko@t-systems.com>
Co-authored-by: Lu, Huayi <luhuayi@huawei.com>
Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
2023-01-19 13:37:49 +00:00

128 lines
20 KiB
HTML

<a name="EN-US_TOPIC_0000001098670818"></a><a name="EN-US_TOPIC_0000001098670818"></a>
<h1 class="topictitle1">CREATE SYNONYM</h1>
<div id="body1578896975701"><div class="section" id="EN-US_TOPIC_0000001098670818__sf337ecb5bde84580afed94be7bbf5fb9"><h4 class="sectiontitle">Function</h4><p id="EN-US_TOPIC_0000001098670818__p1479251195413"><strong id="EN-US_TOPIC_0000001098670818__b1531111214316">CREATE SYNONYM</strong> is used to create a synonym object. A synonym is an alias of a database object and is used to record the mapping between database object names. You can use synonyms to access associated database objects.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000001098670818__section93413620440"><h4 class="sectiontitle">Precautions</h4><ul id="EN-US_TOPIC_0000001098670818__ul10234635104412"><li id="EN-US_TOPIC_0000001098670818__li158597016496">The user of a synonym should be its owner.</li><li id="EN-US_TOPIC_0000001098670818__li2393131774711">If the schema name is specified, create a synonym in the specified schema. Otherwise create a synonym in the current schema.</li><li id="EN-US_TOPIC_0000001098670818__li82251056114919">Database objects that can be accessed using synonyms include tables, views, functions, and stored procedures.</li><li id="EN-US_TOPIC_0000001098670818__li16827289513">To use synonyms, you must have the required permissions on associated objects.</li><li id="EN-US_TOPIC_0000001098670818__li1643774675120">The following DML statements support synonyms: <strong id="EN-US_TOPIC_0000001098670818__b2045944519718">SELECT</strong>, <strong id="EN-US_TOPIC_0000001098670818__b1753013483710">INSERT</strong>, <strong id="EN-US_TOPIC_0000001098670818__b1132051774">UPDATE</strong>, <strong id="EN-US_TOPIC_0000001098670818__b6103145518716">DELETE</strong>, <strong id="EN-US_TOPIC_0000001098670818__b2786135713715">EXPLAIN</strong>, and <strong id="EN-US_TOPIC_0000001098670818__b17584501984">CALL</strong>.</li><li id="EN-US_TOPIC_0000001098670818__li6548114401417">The <strong id="EN-US_TOPIC_0000001098670818__b6664124016710">CREATE SYNONYM</strong> statement of an associated function or stored procedure cannot be used in a stored procedure. You are advised to use synonyms existing in the <strong id="EN-US_TOPIC_0000001098670818__b1228715301185">pg_synonym</strong> system catalog in the stored procedure.</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001098670818__s432427bf362e4684b4559ac16cfcda57"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098670818__s18d476418c7748ada6302a1c75028d5d"><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="p">[</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="p">]</span><span class="w"> </span><span class="n">SYNONYM</span><span class="w"> </span><span class="n">synonym_name</span><span class="w"> </span>
<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="n">object_name</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001098670818__section1549681213574"><h4 class="sectiontitle">Parameter Description</h4><ul id="EN-US_TOPIC_0000001098670818__ul849711245713"><li id="EN-US_TOPIC_0000001098670818__li11885054185912"><strong id="EN-US_TOPIC_0000001098670818__b614481895914">synonym</strong><p id="EN-US_TOPIC_0000001098670818__p836651861419">Name of a synonym which is created (optionally with schema names)</p>
<p id="EN-US_TOPIC_0000001098670818__p967943011145">Value range: a string. It must comply with the identifier naming rules.</p>
</li><li id="EN-US_TOPIC_0000001098670818__li18542153412134"><strong id="EN-US_TOPIC_0000001098670818__b1872512405564">object_name</strong><p id="EN-US_TOPIC_0000001098670818__p571312461613">Name of an object that is associated (optionally with schema names)</p>
<p id="EN-US_TOPIC_0000001098670818__p734282114167">Value range: a string. It must comply with the identifier naming rules.</p>
<div class="note" id="EN-US_TOPIC_0000001098670818__note82872047173219"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001098670818__p152876474329"><strong id="EN-US_TOPIC_0000001098670818__b15102172114148">object_name</strong> can be the name of an object that does not exist.</p>
</div></div>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001098670818__section1853433744413"><h4 class="sectiontitle">Examples</h4><p id="EN-US_TOPIC_0000001098670818__p19011538867">Create schema <strong id="EN-US_TOPIC_0000001098670818__b4330601104021">ot</strong>.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098670818__screen34377108915"><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">SCHEMA</span><span class="w"> </span><span class="n">ot</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001098670818__p58991938669">Create table <strong id="EN-US_TOPIC_0000001098670818__b11034366214021">ot.t1</strong> and its synonym <strong id="EN-US_TOPIC_0000001098670818__b5414937044021">t1</strong>.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098670818__screen125761017593"><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">ot</span><span class="p">.</span><span class="n">t1</span><span class="p">(</span><span class="n">id</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="n">varchar2</span><span class="p">(</span><span class="mi">10</span><span class="p">))</span><span class="w"> </span><span class="n">DISTRIBUTE</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">hash</span><span class="p">(</span><span class="n">id</span><span class="p">);</span><span class="w"></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="n">SYNONYM</span><span class="w"> </span><span class="n">t1</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="n">t1</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001098670818__p48997381620">Use synonym <strong id="EN-US_TOPIC_0000001098670818__b18952816764021">t1</strong>.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098670818__screen18597162517919"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t1</span><span class="p">;</span><span class="w"></span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">t1</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'ada'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'bob'</span><span class="p">);</span><span class="w"></span>
<span class="k">UPDATE</span><span class="w"> </span><span class="n">t1</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">t1</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'cici'</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">t1</span><span class="p">.</span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001098670818__p1898123812612">Create synonym <strong id="EN-US_TOPIC_0000001098670818__b1377728774021">v1</strong> and its associated view <strong id="EN-US_TOPIC_0000001098670818__b5450484594021">ot.v_t1</strong>.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098670818__screen666814321396"><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="n">SYNONYM</span><span class="w"> </span><span class="n">v1</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="n">v_t1</span><span class="p">;</span><span class="w"></span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="n">v_t1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="n">t1</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001098670818__p7898113813612">Use synonym <strong id="EN-US_TOPIC_0000001098670818__b4000398044021">v1</strong>.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098670818__screen55106382916"><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">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">v1</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001098670818__p108983385614">Create overloaded function <strong id="EN-US_TOPIC_0000001098670818__b3680978684021">ot.add</strong> and its synonym <strong id="EN-US_TOPIC_0000001098670818__b20719159684021">add</strong>.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098670818__screen44647485913"><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">FUNCTION</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="k">add</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">integer</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="nb">integer</span><span class="p">)</span><span class="w"> </span><span class="k">RETURNS</span><span class="w"> </span><span class="nb">integer</span><span class="w"> </span><span class="k">AS</span><span class="w"></span>
<span class="err">$$</span><span class="w"></span>
<span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="err">$</span><span class="mi">2</span><span class="w"></span>
<span class="err">$$</span><span class="w"></span>
<span class="k">LANGUAGE</span><span class="w"> </span><span class="k">sql</span><span class="p">;</span><span class="w"></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">FUNCTION</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="k">add</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">decimal</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="nb">decimal</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span><span class="w"> </span><span class="k">RETURNS</span><span class="w"> </span><span class="nb">decimal</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"></span>
<span class="err">$$</span><span class="w"></span>
<span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="err">$</span><span class="mi">2</span><span class="w"></span>
<span class="err">$$</span><span class="w"></span>
<span class="k">LANGUAGE</span><span class="w"> </span><span class="k">sql</span><span class="p">;</span><span class="w"></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="n">SYNONYM</span><span class="w"> </span><span class="k">add</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="k">add</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001098670818__p1889717381562">Use synonym <strong id="EN-US_TOPIC_0000001098670818__b19599397894021">add</strong>.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098670818__screen27651257375"><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">SELECT</span><span class="w"> </span><span class="k">add</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="w"></span>
<span class="k">SELECT</span><span class="w"> </span><span class="k">add</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">2</span><span class="p">.</span><span class="mi">3</span><span class="p">);</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001098670818__p16897838569">Create stored procedure <strong id="EN-US_TOPIC_0000001098670818__b1571928014021">ot.register</strong> and its synonym <strong id="EN-US_TOPIC_0000001098670818__b14497871314021">register</strong>.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098670818__screen897315311472"><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">PROCEDURE</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="n">register</span><span class="p">(</span><span class="n">n_id</span><span class="w"> </span><span class="nb">integer</span><span class="p">,</span><span class="w"> </span><span class="n">n_name</span><span class="w"> </span><span class="n">varchar2</span><span class="p">(</span><span class="mi">10</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="k">AS</span><span class="w"></span>
<span class="k">BEGIN</span><span class="w"></span>
<span class="w"> </span><span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="n">t1</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="n">n_id</span><span class="p">,</span><span class="w"> </span><span class="n">n_name</span><span class="p">);</span><span class="w"></span>
<span class="k">END</span><span class="p">;</span><span class="w"></span>
<span class="o">/</span><span class="w"></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="n">SYNONYM</span><span class="w"> </span><span class="n">register</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="n">register</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001098670818__p168961338868">Use synonym <strong id="EN-US_TOPIC_0000001098670818__b8952415084021">register</strong> to invoke the stored procedure.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001098670818__screen107873537616"><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">register</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="s1">'mia'</span><span class="p">);</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001098670818__s7408f0450b9b4dc7948c069376053290"><h4 class="sectiontitle">Helpful Links</h4><p id="EN-US_TOPIC_0000001098670818__en-us_topic_0059778825_p749627459"><a href="dws_06_0140.html">ALTER SYNONYM</a> <a href="dws_06_0207.html">DROP SYNONYM</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>