Bonjour,
J'ai créé un package sql, où j'ai declaré deux fonctions (la première prend la liste des colonnes d'une table et la table elle même et retourne un varchar2(= noms des colonnes séparées par des virgules et la deuxième prend les même paramètres et retourne un clob)et un type composé(VARRAY): voici le code
voici l'erreur que j'ai lors de la compilation
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
38
39
40
41
42
43 create or replace package Generic_export is type ColumnList is VARRAY(50) OF VARCHAR2(30); function getColumnsNames( tab in varchar2, cols in ColumnList) return varchar2; function ExportToXml(tab in varchar2, cols in ColumnList) return clob; end Generic_export; create or replace package body Generic_export is -- Function and procedure implementations function getColumnsNames( tab in varchar2, cols in ColumnList) return varchar2 is l_columns varchar2(2000); nbrcol integer; i integer := 1; begin l_columns := ''; select count(column_name) into nbrcol from all_tab_columns where table_name=tab; if i<=50 and cols(i)!= '' then loop l_columns := l_columns ||','|| cols(i); i := i+1; end loop; end if; return l_columns; end getColumnsNames; function ExportToXml(tab in varchar2, cols in ColumnList) return clob is l_result clob; l_queryCtx DBMS_XMLquery.ctxType; l_sqlQuery varchar2(2000); l_columns varchar2(2000); -- set up the query context...! l_columns := getColumnsNames(tab, cols); l_sqlQuery := ('select '||l_columns||' from '||tab); l_queryCtx := DBMS_XMLQuery.newContext(l_sqlQuery); -- get the result..! l_result := DBMS_XMLQuery.getXML(l_queryCtx); DBMS_XMLQuery.closeContext(l_queryCtx); -- you must close the query handle.. return(l_result); end ExportToXml; end Generic_export
Je ne comprends pas où est le problème
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 Error: PLS-00103: Symbole "=" rencontré à la place d'un des symboles suivants : constant exception <identificateur> <identificateur entre guillemets> table LONG_ double ref char time timestamp interval date binary national character nchar Symbole "<identificateur>" a été substitué à "=" pour continuer. Line: 28 Text: l_columns := getColumnsNames(tab, cols); Error: PLS-00103: Symbole "=" rencontré à la place d'un des symboles suivants : constant exception <identificateur> <identificateur entre guillemets> table LONG_ double ref char time timestamp interval date binary national character nchar Symbole "<identificateur>" a été substitué à "=" pour continuer. Line: 29 Text: l_sqlQuery := ('select '||l_columns||' from '||tab); Error: PLS-00103: Symbole "=" rencontré à la place d'un des symboles suivants : constant exception <identificateur> <identificateur entre guillemets> table LONG_ double ref char time timestamp interval date binary national character nchar Symbole "<identificateur>" a été substitué à "=" pour continuer. Line: 30 Text: l_queryCtx := DBMS_XMLQuery.newContext(l_sqlQuery); Error: PLS-00103: Symbole "=" rencontré à la place d'un des symboles suivants : constant exception <identificateur> <identificateur entre guillemets> table LONG_ double ref char time timestamp interval date binary national character nchar Symbole "<identificateur>" a été substitué à "=" pour continuer. Line: 32 Text: l_result := DBMS_XMLQuery.getXML(l_queryCtx); Error: PLS-00103: Symbole "." rencontré à la place d'un des symboles suivants : constant exception <identificateur> <identificateur entre guillemets> table LONG_ double ref char time timestamp interval date binary national character nchar Symbole "<identificateur>" a été substitué à "." pour continuer. Line: 33 Text: DBMS_XMLQuery.closeContext(l_queryCtx); -- you must close the query handle.. Error: PLS-00103: Symbole "(" rencontré à la place d'un des symboles suivants : constant exception <identificateur> <identificateur entre guillemets> table LONG_ double ref char time timestamp interval date binary national character nchar Symbole "<identificateur>" a été substitué à "(" pour continuer. Line: 34 Text: return(l_result); Error: PLS-00103: Symbole "END" rencontré à la place d'un des symboles suivants : begin function package pragma procedure subtype type use <identificateur> <identificateur entre guillemets> form current cursor Line: 35 Text: end ExportToXml; Error: Hint: Comparison with NULL in 'getColumnsNames' Line: 13 Text: if i<=50 and cols(i)!= '' then Error: Hint: Variable 'DBMS_XMLQuery.closeContext' is declared but never used in 'ExportToXml' Line: 33 Text: DBMS_XMLQuery.closeContext(l_queryCtx); -- you must close the query handle..
toute aide serait la bien venue
Merci d'avance
Partager