Bonjour à tou(te)s,
Je débute en PL/SQL et je veux écrire une fonction qui récupère automatiquement dans une chaîne la concaténation des colonnes d'une table fournie en paramètre.
Exemple : soit la table A ayant 2 colonnes X et Y alors le résultat de l'appel de cette fonction à laquelle on fournit le paramètre 'A' est : (X, Y)
Voici l'erreur que j'obtiens quand j'essaye de la déclarer sous sqlplus :
Pour information si j'utilise un "bloc anonyme" (sorry si j'emploie un mot à la place d'un autre, je suis débutant
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 1 CREATE OR REPLACE FUNCTION listColumns (PCname_table VARCHAR2, PCowner VARCHAR2) RETURN VARCHAR 2 LClist_columns VARCHAR2(1000); 3 LCcolumn_fetched VARCHAR2(50); 4 CURSOR LCuTable IS 5 SELECT COLUMN_NAME 6 FROM DBA_TAB_COLUMNS 7 WHERE UPPER(OWNER) = PCowner 8 AND TABLE_NAME = PCname_table 9 ORDER BY COLUMN_ID; 10 BEGIN 11 LClist_columns := ''; 12 OPEN LCuTable; 13 LOOP 14 FETCH LCuTable INTO LCcolumn_fetched; 15 EXIT WHEN LCuTable%NOTFOUND; 16 LClist_columns := LClist_columns || LCcolumn_fetched || ', '; 17 END LOOP; 18 LClist_columns := '(' || SUBSTR( LClist_columns, 1, LENGTH(LClist_columns) ) || ')'; 19 CLOSE LCuTable; 20 RETURN LClist_columns; 21* END; SQL> / Attention : Fonction créée avec erreurs de compilation. SQL> show error Erreurs pour FUNCTION LISTCOLUMNS : LINE/COL ERROR -------- ----------------------------------------------------------------- 5/3 PL/SQL: SQL Statement ignored 5/10 PLS-00320: the declaration of the type of this expression is incomplete or malformed 6/8 PLS-00201: identifier 'SYS.DBA_TAB_COLUMNS' must be declared 14/7 PL/SQL: SQL Statement ignored) alors l'exécution se déroule sans souci et me retourne la chaine que je demande.
Merci du moindre coup de main.
Partager