<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
	<id>http://postgres.cz/index.php?action=history&amp;feed=atom&amp;title=Basic_statements_SQL%2FPSM_samples</id>
	<title>Basic statements SQL/PSM samples - Historie editací</title>
	<link rel="self" type="application/atom+xml" href="http://postgres.cz/index.php?action=history&amp;feed=atom&amp;title=Basic_statements_SQL%2FPSM_samples"/>
	<link rel="alternate" type="text/html" href="http://postgres.cz/index.php?title=Basic_statements_SQL/PSM_samples&amp;action=history"/>
	<updated>2026-06-02T19:42:06Z</updated>
	<subtitle>Historie editací této stránky</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>http://postgres.cz/index.php?title=Basic_statements_SQL/PSM_samples&amp;diff=216&amp;oldid=prev</id>
		<title>85.160.82.76: /* assignment */</title>
		<link rel="alternate" type="text/html" href="http://postgres.cz/index.php?title=Basic_statements_SQL/PSM_samples&amp;diff=216&amp;oldid=prev"/>
		<updated>2006-12-28T10:20:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;assignment&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== assignment ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- only assignment&lt;br /&gt;
CREATE OR REPLACE FUNCTION fr(OUT a int) &lt;br /&gt;
AS&lt;br /&gt;
$$&lt;br /&gt;
  SET a = 10;&lt;br /&gt;
$$ LANGUAGE plpgpsm;&lt;br /&gt;
&lt;br /&gt;
-- assignment result of select&lt;br /&gt;
CREATE OR REPLACE FUNCTION fx(b int) &lt;br /&gt;
RETURNS int AS&lt;br /&gt;
$$&lt;br /&gt;
  BEGIN&lt;br /&gt;
    SET b = (SELECT 4);&lt;br /&gt;
    RETURN b;&lt;br /&gt;
  END;&lt;br /&gt;
$$ LANGUAGE plpgpsm;&lt;br /&gt;
&lt;br /&gt;
-- multiple variable assignment (simultaneous assignment)&lt;br /&gt;
CREATE OR REPLACE FUNCTION fx(b int) &lt;br /&gt;
RETURNS int AS &lt;br /&gt;
$$ &lt;br /&gt;
  BEGIN &lt;br /&gt;
    DECLARE x, y integer; &lt;br /&gt;
    DECLARE z integer DEFAULT 0;&lt;br /&gt;
    SET (x,y)=(10,20); &lt;br /&gt;
    PRINT x,y,z; &lt;br /&gt;
    SET (x,y,z) = (SELECT x+1,y+1, x+y); &lt;br /&gt;
    PRINT x,y,z;&lt;br /&gt;
    -- DB2 form of simultaneous assignment&lt;br /&gt;
    SET x = 0, y = x + 1, z = y + 1;&lt;br /&gt;
    PRINT x,y,z;&lt;br /&gt;
    RETURN b; &lt;br /&gt;
  END &lt;br /&gt;
$$ LANGUAGE plpgpsm;&lt;br /&gt;
&lt;br /&gt;
-- assign system variable&lt;br /&gt;
CREATE OR REPLACE FUNCTION fx(a bool)&lt;br /&gt;
RETURNS VOID AS &lt;br /&gt;
$$&lt;br /&gt;
  BEGIN&lt;br /&gt;
    SET enable_seqscan = a; &lt;br /&gt;
  END;&lt;br /&gt;
$$ LANGUAGE plpgpsm;&lt;br /&gt;
&lt;br /&gt;
-- handling not found signal &lt;br /&gt;
CREATE OR REPLACE FUNCTION fx(b int)&lt;br /&gt;
RETURNS int as&lt;br /&gt;
$$&lt;br /&gt;
  BEGIN&lt;br /&gt;
    DECLARE c int;&lt;br /&gt;
    DECLARE CONTINUE HANDLER FOR NOT FOUND PRINT &amp;#039;not found&amp;#039;;&lt;br /&gt;
    --DELETE FROM foo;                                                                                      &lt;br /&gt;
    SELECT INTO b a FROM foo;&lt;br /&gt;
    SET (b,c) = (SELECT a,a FROM foo);&lt;br /&gt;
    RETURN b+c;&lt;br /&gt;
  END;&lt;br /&gt;
$$ LANGUAGE plpgpsm;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== one statement&amp;#039;s functions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE OR REPLACE FUNCTION fr(OUT a int) &lt;br /&gt;
AS&lt;br /&gt;
$$&lt;br /&gt;
  SET a = 10;&lt;br /&gt;
$$ LANGUAGE plpgpsm;&lt;br /&gt;
&lt;br /&gt;
-- only return&lt;br /&gt;
CREATE OR REPLACE FUNCTION f(a integer, b integer) &lt;br /&gt;
RETURNS int AS&lt;br /&gt;
$$&lt;br /&gt;
  RETURN a + b;&lt;br /&gt;
$$ LANGUAGE plpgpsm;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conditional control ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- if statement&lt;br /&gt;
CREATE OR REPLACE FUNCTION fx(b int) &lt;br /&gt;
RETURNS int AS&lt;br /&gt;
$$&lt;br /&gt;
  BEGIN&lt;br /&gt;
    IF b &amp;lt; 2 THEN&lt;br /&gt;
      PRINT &amp;#039;mensi&amp;#039;;&lt;br /&gt;
    ELSE&lt;br /&gt;
      PRINT &amp;#039;vetsi&amp;#039;;&lt;br /&gt;
    END IF;&lt;br /&gt;
    RETURN b;&lt;br /&gt;
END;&lt;br /&gt;
$$ LANGUAGE plpgpsm&lt;br /&gt;
&lt;br /&gt;
-- searched case statement&lt;br /&gt;
CREATE OR REPLACE FUNCTION fx(b int) &lt;br /&gt;
RETURNS int as&lt;br /&gt;
$$&lt;br /&gt;
  BEGIN&lt;br /&gt;
    CASE WHEN b = 1 THEN PRINT &amp;#039;jedna&amp;#039;;&lt;br /&gt;
         WHEN b = 2 THEN PRINT &amp;#039;dve&amp;#039;;&lt;br /&gt;
         ELSE PRINT &amp;#039;neco&amp;#039;;&lt;br /&gt;
              PRINT &amp;#039;je jinak&amp;#039;;&lt;br /&gt;
    END CASE;&lt;br /&gt;
    RETURN b;&lt;br /&gt;
  END;&lt;br /&gt;
$$ LANGUAGE plpgpsm;&lt;br /&gt;
&lt;br /&gt;
-- simple case statement&lt;br /&gt;
CREATE OR REPLACE FUNCTION fx(b int)&lt;br /&gt;
RETURNS int as&lt;br /&gt;
$$&lt;br /&gt;
  BEGIN&lt;br /&gt;
    CASE b&lt;br /&gt;
         WHEN 1 THEN PRINT &amp;#039;jedna&amp;#039;;&lt;br /&gt;
         WHEN 2 THEN PRINT &amp;#039;dve&amp;#039;;&lt;br /&gt;
         ELSE PRINT &amp;#039;neco&amp;#039;;&lt;br /&gt;
              PRINT &amp;#039;je jinak&amp;#039;;&lt;br /&gt;
    END CASE;&lt;br /&gt;
    RETURN b;&lt;br /&gt;
  END;&lt;br /&gt;
$$ LANGUAGE plpgpsm;&lt;br /&gt;
&lt;br /&gt;
-- simple case statement, comma separated predicates&lt;br /&gt;
CREATE OR REPLACE FUNCTION fx(b int)&lt;br /&gt;
RETURNS int as&lt;br /&gt;
$$&lt;br /&gt;
  BEGIN&lt;br /&gt;
    CASE b&lt;br /&gt;
         WHEN 1.0,   3, 5.0 THEN PRINT &amp;#039;liche&amp;#039;; PRINT &amp;#039;cisla&amp;#039;;&lt;br /&gt;
         WHEN   2, 4.0,   6 THEN PRINT &amp;#039;sude&amp;#039;;  PRINT &amp;#039;cisla&amp;#039;;&lt;br /&gt;
    END CASE;&lt;br /&gt;
    RETURN b;&lt;br /&gt;
  END;&lt;br /&gt;
$$ LANGUAGE plpgpsm;&lt;br /&gt;
&lt;br /&gt;
-- block, variables with default value&lt;br /&gt;
CREATE OR REPLACE FUNCTION fx(a int) &lt;br /&gt;
RETURNS int AS&lt;br /&gt;
$$&lt;br /&gt;
  xx:BEGIN&lt;br /&gt;
       DECLARE o,c integer DEFAULT 10;&lt;br /&gt;
       PRINT o,c;&lt;br /&gt;
       RETURN o;&lt;br /&gt;
     END;&lt;br /&gt;
$$ LANGUAGE plpgpsm;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Iterative processing with loops ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- loop cycle&lt;br /&gt;
CREATE OR REPLACE FUNCTION fx(b int)&lt;br /&gt;
RETURNS int as&lt;br /&gt;
$$&lt;br /&gt;
  BEGIN&lt;br /&gt;
    lc:LOOP&lt;br /&gt;
         IF b &amp;gt; 10 THEN&lt;br /&gt;
           LEAVE lc;&lt;br /&gt;
         END IF;&lt;br /&gt;
         SET b = b + 1;&lt;br /&gt;
       END LOOP;&lt;br /&gt;
    RETURN b;&lt;br /&gt;
  END;&lt;br /&gt;
$$ LANGUAGE plpgpsm;&lt;br /&gt;
&lt;br /&gt;
-- while&lt;br /&gt;
CREATE OR REPLACE FUNCTION fx(b int) &lt;br /&gt;
RETURNS int AS&lt;br /&gt;
$$&lt;br /&gt;
  BEGIN&lt;br /&gt;
    DECLARE a int DEFAULT 1;&lt;br /&gt;
    llx : WHILE a &amp;lt; b&lt;br /&gt;
          DO&lt;br /&gt;
            SET a = a + 1;&lt;br /&gt;
            PRINT a;&lt;br /&gt;
          END WHILE llx;&lt;br /&gt;
    RETURN a;&lt;br /&gt;
  END;&lt;br /&gt;
$$ LANGUAGE plpgpsm;&lt;br /&gt;
&lt;br /&gt;
-- repeat&lt;br /&gt;
CREATE OR REPLACE FUNCTION f() &lt;br /&gt;
RETURNS int AS&lt;br /&gt;
$$&lt;br /&gt;
  BEGIN&lt;br /&gt;
    DECLARE i integer DEFAULT 0;&lt;br /&gt;
    REPEAT&lt;br /&gt;
      SET i = i + 1;&lt;br /&gt;
      PRINT i;&lt;br /&gt;
    UNTIL i &amp;lt; 10&lt;br /&gt;
    END REPEAT;&lt;br /&gt;
  END;&lt;br /&gt;
$$ LANGUAGE plpgpsm;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>85.160.82.76</name></author>
	</entry>
</feed>