<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>PostgreSQL: if exists Äquivalent</title>
    <link>http://forum.geizhals.at/feed.jsp?id=375955</link>
    <description>Geizhals-Forum</description>
    <item>
      <title>Re(2): PostgreSQL: if exists Äquivalent</title>
      <link>http://forum.geizhals.at/t375955,2950955.html#2950955</link>
      <description>Danke! Hätte mir jetzt nicht gedacht, daß man das so umständlich lösen muß. Ich mußte jedoch unter &lt;br&gt;&lt;br&gt;execute v_sql; &lt;br&gt;&lt;br&gt;noch return; einfügen. Sonst brach psql 8.0.3 mit dem Fehler &lt;br&gt;&lt;br&gt;ERROR:&amp;nbsp;&amp;nbsp;control reached end of function without RETURN&lt;br&gt;CONTEXT:&amp;nbsp;&amp;nbsp;PL/pgSQL function "execute_unless_table_exists"&lt;br&gt;&lt;br&gt;ab. Hab die Funktion dann auch noch für Indexes gemacht und funktioniert prächtig.&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;br&gt;create or replace function execute_unless_index_exists(v_idx_name varchar, v_create_sql varchar) returns void as $$&lt;br&gt;declare&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x integer;&lt;br&gt;begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;select 1 into x from pg_indexes where indexname=v_idx_name;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if x = 1 then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end if;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;execute v_create_sql;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&lt;br&gt;end;&lt;br&gt;$$ language plpgsql;&lt;br&gt;&lt;/pre&gt;&lt;br&gt;&lt;br&gt;Herzlichen Dank nochmal! &lt;img src="smile.gif" width="16" height="19" align="absmiddle" alt=":)"/&gt;&lt;br/&gt;</description>
      <pubDate>Mon, 14 Nov 2005 10:31:52 GMT</pubDate>
      <guid>http://forum.geizhals.at/t375955,2950955.html#2950955</guid>
      <dc:creator>johnjohnson</dc:creator>
      <dc:date>2005-11-14T10:31:52Z</dc:date>
    </item>
    <item>
      <title>Re: PostgreSQL: if exists Äquivalent</title>
      <link>http://forum.geizhals.at/t375955,2950888.html#2950888</link>
      <description>Getestet mit PostgreSQL 8.1, funktioniert nicht mit 7.4.x:&lt;br&gt;&lt;br&gt;&lt;tt&gt;&lt;br&gt;create language plpgsql;&lt;br&gt;create or replace function execute_unless_table_exists(v_table varchar, v_sql varchar) returns void as $$&lt;br&gt;declare&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x integer;&lt;br&gt;begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;select 1 into x from pg_tables where tablename=v_table;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if x = 1 then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end if;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;execute v_sql;&lt;br&gt;end;&lt;br&gt;$$ language plpgsql;&lt;br&gt;&lt;/tt&gt;&lt;br&gt;&lt;br&gt;So wird das dann verwendet:&lt;br&gt;&lt;br&gt;&lt;tt&gt;=# select execute_unless_table_exists('bla','create table bla();');&lt;/tt&gt;&lt;br&gt;&lt;br&gt;Das 2. Argument kann natürlich beliebiges SQL sein ...&lt;br/&gt;</description>
      <pubDate>Mon, 14 Nov 2005 10:06:26 GMT</pubDate>
      <guid>http://forum.geizhals.at/t375955,2950888.html#2950888</guid>
      <dc:creator>mjy@geizhals.at</dc:creator>
      <dc:date>2005-11-14T10:06:26Z</dc:date>
    </item>
    <item>
      <title>Re: PostgreSQL: if exists Äquivalent</title>
      <link>http://forum.geizhals.at/t375955,2950801.html#2950801</link>
      <description>Kenn weder MySQL noch MSSQL &lt;img src="zwinker.gif" width="16" height="19" align="absmiddle" alt=";-)"/&gt;.&lt;br&gt;&lt;br&gt;Was du aber verwenden mußt, ist IMHO ein plpgsql-Block.&lt;br&gt;Sowie ein PERFORM-Statement i.d. Folge&lt;br&gt;&lt;br&gt;&lt;br/&gt;</description>
      <pubDate>Mon, 14 Nov 2005 09:26:15 GMT</pubDate>
      <guid>http://forum.geizhals.at/t375955,2950801.html#2950801</guid>
      <dc:creator>gepeinigter_aon_neukunde</dc:creator>
      <dc:date>2005-11-14T09:26:15Z</dc:date>
    </item>
    <item>
      <title>PostgreSQL: if exists Äquivalent</title>
      <link>http://forum.geizhals.at/t375955,2950728.html#2950728</link>
      <description>Hallo,&lt;br&gt;&lt;br&gt;hab in der Doku leider nichts passendes gefunden. Ich suche ein Postgre Äquivalent zu "IF EXISTS" von MySQL, bzw. if (exists(...)) bei MSSQL und zwar für Create Table und Create Index. &lt;br&gt;&lt;br&gt;Es gibt zwar ein Exists für Subqueries und Case/Then für Conditionals, diese kann man aber offensichtlich (oder ich seh's einfach nicht) nicht mit einem CREATE verwenden.&lt;br&gt;&lt;br&gt;Hat jemand eine Idee?&lt;br/&gt;</description>
      <pubDate>Mon, 14 Nov 2005 08:51:04 GMT</pubDate>
      <guid>http://forum.geizhals.at/t375955,2950728.html#2950728</guid>
      <dc:creator>johnjohnson</dc:creator>
      <dc:date>2005-11-14T08:51:04Z</dc:date>
    </item>
  </channel>
</rss>
