diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2022-06-20 10:34:09 +0200 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2022-06-20 10:34:09 +0200 |
| commit | 91169bdfa314282e9eb940df91c95ad6506e8d08 (patch) | |
| tree | 68da42e26ab418bc776c9fb5073e493e832ee43a | |
| parent | 2c4785456fb3fc4e7af07919c64fed4c7ed4eea3 (diff) | |
| download | perlweeklychallenge-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.sql | 48 |
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; |
