diff options
| -rw-r--r-- | challenge-197/luca-ferrari/postgresql/ch-2.sql | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/challenge-197/luca-ferrari/postgresql/ch-2.sql b/challenge-197/luca-ferrari/postgresql/ch-2.sql new file mode 100644 index 0000000000..b68f56beea --- /dev/null +++ b/challenge-197/luca-ferrari/postgresql/ch-2.sql @@ -0,0 +1,49 @@ +-- Perl Weekly Challenge 197 +-- Task 2 + +CREATE SCHEMA IF NOT EXISTS pwc197; + +CREATE OR REPLACE FUNCTION +pwc197.task2_plpgsql( l int[] ) +RETURNS int[] +AS $CODE$ +DECLARE + i int; + v int[]; + need_change bool := false; + t int; +BEGIN + need_change := true; + v := l; + raise info 'array %', v; + + WHILE need_change LOOP + need_change := false; + FOR i IN 0 .. array_length( v, 1 ) - 1 LOOP + + IF i % 2 = 0 THEN + IF v[ i ] <= v[ i + 1 ] THEN + need_change := true; + END IF; + ELSE + IF v[i] >= v[ i + 1 ] THEN + need_change := true; + END IF; + END IF; + + + IF need_change THEN + t := v[i]; + v[i] := v[i + 1]; + v[ i + 1 ]:= t; + END IF; + END LOOP; + + END LOOP; + + + + RETURN v; +END +$CODE$ +LANGUAGE plpgsql; |
