bonjour,
j'ai un package avec une fonction dedans, et lorsque j'execute le package, j'ai une erreur :
voici mon package :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ORA-00902 invalid datatype Cause: The datatype entered in the CREATE or ALTER TABLE statement is not valid. Action: Correct the syntax.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 CREATE OR REPLACE PACKAGE CREER_COMPTE_EN_LIGNE IS TYPE TAB_CEL IS RECORD ( refbp varchar2(9), mail char(100), mailok smallint, newsok smallint, code_retour smallint ); FUNCTION F_CONTROLE_CEL(in_refbp varchar2) Return TAB_CEL ; END CREER_COMPTE_EN_LIGNE; /et lorsque j'execute ainsi :
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 CREATE OR REPLACE PACKAGE BODY CREER_COMPTE_EN_LIGNE AS function f_controle_cel( in_refbp IN varchar2) return TAB_CEL IS PRAGMA AUTONOMOUS_TRANSACTION ; vc_refbp varchar2(9); vc_today date; vc_date_creation date; vc_flagcel char; vc_mail char(100); vc_mailok smallint; vc_newsok smallint; vc_date_max date; vc_total TAB_CEL; BEGIN SELECT CLI_FLAGCEL INTO vc_flagcel FROM CLIENT WHERE CLI_REFBP = in_refbp; SELECT TRUNC(CLI_DATE_CREATION) INTO vc_date_creation FROM CLIENT WHERE CLI_REFBP = in_refbp; SELECT CLI_MAIL,CLI_MAILOK,CLI_NEWSOK INTO vc_mail,vc_mailok,vc_newsok FROM CLIENT WHERE CLI_REFBP = in_refbp; --DBMS_OUTPUT.PUT (vc_date_creation); vc_date_max := vc_date_creation + 15; vc_today := TRUNC(sysdate); IF (vc_flagcel = 'v') THEN vc_total.code_retour := 0; commit; return vc_total; ELSE IF (vc_flagcel = 'd') THEN IF (vc_date_max >= vc_today) THEN --DBMS_OUTPUT.PUT ('a temps'); vc_total.refbp := in_refbp; vc_total.mail := vc_mail; vc_total.mailok := vc_mailok; vc_total.newsok := vc_newsok; vc_total.code_retour := 2; --DBMS_OUTPUT.PUT (vc_total.refbp); commit; return vc_total; ELSE --DBMS_OUTPUT.PUT ('trop tard'); vc_total.code_retour := 1; commit; return vc_total; END IF; END IF; END IF; END; END CREER_COMPTE_EN_LIGNE; /
sa ne fonctionne pas et renvoi le message d'erreur précédement cité...
Code : Sélectionner tout - Visualiser dans une fenêtre à part select CREER_COMPTE_EN_LIGNE.f_controle_cel('11111') from dual
je ne comprend pas pourquoi les type ne son pas identique alors que ce sont tous des varchar2!!!
quelqu'un pourrait me dire ou est le probleme?
merci
hOAx punK
Partager