Salut,
Je suis débutant avec postgres, mais pas avec les sgbd. J'ai donc un probleme avec le langage pl/pgsql. Je veux créer une table qui contient une itération d'entier et dit si c un pair ou un impair plus deux multiplication(bref un cas d'école pour apprendre) dans une fonction.
voici ce que j'ai fait:
Lorsque je fait dans ma console un ' SELECT la_parite(2); ' et bien il me dit que la colonne pair n'existe pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 CREATE OR REPLACE FUNCTION "public"."la_parite" (INTEGER) RETURNS VARCHAR AS' BEGIN IF mod($1, 2) != 0 THEN RETURN "impaire"; ELSE RETURN "pair"; END IF; END; 'LANGUAGE 'plpgsql'; CREATE OR REPLACE FUNCTION "public"."tab_parite" (void) RETURNS void AS' DECLARE i INTEGER; requete := "CREATE TABLE tmp1( i INTEGER CONSTRAINT PRIMARY KEY, PARITE VARCHAR(10), i**2 INTEGER, i**3 INTEGER)"; BEGIN EXECUTE requete; FOR i IN 1 10 LOOP EXECUTE "INSERT INTO tmp1 values( i," || la_parite( i ) || ", i*2, i*3)"; END LOOP; RETURN; END; 'LANGUAGE 'plpgsql';
Et si je veux exécuter tab_parite alors la ca me dit que la fonction n'existe pas.
alors que lors de l'execution du fichier contenant les fonctions j'ai eu le resultat:
CREATE FUNCTION
CREATE FUNCTION
Si qq peut m'aider pour débuter en pl/pgsql...
Merci
Partager