aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2022-06-20 10:34:09 +0200
committerLuca Ferrari <fluca1978@gmail.com>2022-06-20 10:34:09 +0200
commit91169bdfa314282e9eb940df91c95ad6506e8d08 (patch)
tree68da42e26ab418bc776c9fb5073e493e832ee43a
parent2c4785456fb3fc4e7af07919c64fed4c7ed4eea3 (diff)
downloadperlweeklychallenge-club-91169bdfa314282e9eb940df91c95ad6506e8d08.tar.gz
perlweeklychallenge-club-91169bdfa314282e9eb940df91c95ad6506e8d08.tar.bz2
perlweeklychallenge-club-91169bdfa314282e9eb940df91c95ad6506e8d08.zip
Task 1 done in plpgsql
-rw-r--r--challenge-170/luca-ferrari/postgresql/ch-1.sql48
1 files changed, 48 insertions, 0 deletions
diff --git a/challenge-170/luca-ferrari/postgresql/ch-1.sql b/challenge-170/luca-ferrari/postgresql/ch-1.sql
new file mode 100644
index 0000000000..a94956f220
--- /dev/null
+++ b/challenge-170/luca-ferrari/postgresql/ch-1.sql
@@ -0,0 +1,48 @@
+-- Perl Weekly Challenge 170
+-- Task 1
+
+CREATE SCHEMA IF NOT EXISTS pwc170;
+
+CREATE OR REPLACE FUNCTION
+pwc170.is_prime( v bigint )
+RETURNS bool
+AS $code$
+DECLARE
+ i bigint;
+BEGIN
+ FOR i IN 2 .. v - 1 LOOP
+ IF v % i = 0 THEN
+ RETURN false;
+ END IF;
+ END LOOP;
+
+ RETURN TRUE;
+END
+$code$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION
+pwc170.task1_plpgsql( l int default 10 )
+RETURNS SETOF INT
+AS $CODE$
+DECLARE
+ v bigint := 1;
+ i bigint;
+BEGIN
+ FOR i IN SELECT n FROM generate_series( 1, 100000 ) n LOOP
+ IF pwc170.is_prime( i ) THEN
+ v := v * i;
+ l := l - 1;
+ RETURN NEXT v;
+ END IF;
+
+ IF l <= 0 THEN
+ RETURN;
+ END IF;
+ END LOOP;
+
+ RETURN;
+END
+$CODE$
+LANGUAGE plpgsql;