Bonjour à tous
J'ai créé une fonction qui me retourne le nom d'in client en varchar2. Le code de cette fonction est :
J'utilise cette fonction dans la création d'une vue, voici le code
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 CREATE OR REPLACE function f_raison (wcodpar varchar2, wtyppar integer) return varchar2 is wraison varchar2(50); BEGIN --06-2004 : GE Creation d une fontion pour recuperer la raison d un tier en fonction --du wcodpar et wtyppar passes en parametre -- Script $FONCTION/tiers2000.sql select raison into wraison from tiers2000 where codpar=wcodpar and typpar=wtyppar; return (wraison); EXCEPTION when NO_DATA_FOUND then raise_application_error(-20500,' (F_RAISON) : Code Tiers ou Typpar Invalide'); END f_raison; /
Lorsque je regarde ensuite les champs de cette vue, le champ qui utilise la fonction f_raison a pour définition varchar2(4000) !
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 CREATE OR REPLACE VIEW TAB_STAT_MARCHE (FAM, LFAM, RGP_FAM, LRGP_FAM, CODPAR, RAISON, CAN, CAN_1, PAYS, LIBPAYS, CODVRP, NOMVRP, ART, BNB, BCT, QTC, PNF, MTT, CA_REM, REM2, JPP, FAME, LIBFAME, COND, RGP, RGP2) AS select t.cfam1||t.cfam2 ,f_parama2('FCL',t.cfam1||t.cfam2,t.pays) ,p.rgp2 ,f_parama('FCL2',p.rgp2) ,h.codpar ,f_raison(h.codpar,1) ,pc.can ,pc.can_1 ,t.pays ,f_parama('PAYS',t.pays) ,t.codvrp ,f_nomvrp(t.codvrp) ,f.art ,f.bnb ,f.bct ,f.qtc ,f.pnf ,nvl(qtc,0) * nvl(pnf,0) ,((nvl(f.qtc,0)*nvl(f.pnf,0)) -(decode(nvl(f.tsr,'x'),'P',0,nvl(f.qtc,0)*nvl(f.pnf,0) *nvl(h.remfac,0)/100))) ,f.rem2 ,a.jpp ,a.fame ,f_parama('FAME',a.fame) ,a.cond ,lc.rgp ,lc.rgp2 from param2000 p, libcond lc, pclca2000 pc, artnew a, client t, historic h, facture f where f.cde = h.cde and f.liv = h.liv and t.codpar=h.codpar and t.typpar=1 and p.rub='FCL' and p.cod=t.cfam1||t.cfam2 and p.cod2=t.pays and a.art=f.art and pc.codpar=t.codpar and pc.typpar=t.typpar and lc.cond=a.cond /
Voir ci dessous :
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 Name Null? Type ----------------------------------------- -------- ---------------------------- FAM VARCHAR2(3) LFAM VARCHAR2(4000) RGP_FAM VARCHAR2(5) LRGP_FAM VARCHAR2(4000) CODPAR NOT NULL VARCHAR2(6) RAISON VARCHAR2(4000) CAN NUMBER CAN_1 NUMBER PAYS VARCHAR2(3) LIBPAYS VARCHAR2(4000) CODVRP VARCHAR2(5) NOMVRP VARCHAR2(4000) ART NUMBER(5) BNB VARCHAR2(40) BCT VARCHAR2(20) QTC NUMBER PNF NUMBER MTT NUMBER CA_REM NUMBER REM2 VARCHAR2(3) JPP VARCHAR2(2) FAME VARCHAR2(3) LIBFAME VARCHAR2(4000) COND NOT NULL NUMBER(3) RGP VARCHAR2(2) RGP2 VARCHAR2(2)
Comme vous pouvez le voir le souci est le même avec les autres fonction utilisé dans la vue.
Pour des problème de traitement, nous recopions la vue dans une table en faisant unEst ce que j'ai constaté est un problème ? est ce qu'il est possible de donner un taille à une variable de retour ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part create table tab2 as select * from tab_stat_marche
J'espère avoir été clair
Partager