Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/09/2008, 14h53   #1
Membre à l'essai
 
Avatar de pascal_T
 
Inscription : avril 2007
Messages : 95
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 95
Points : 21
Points : 21
Par défaut Passage de valeur à un curseur

J'ai mis en place un script ou je souhaite passer une valeur en paramètre au curseur, mais il semble que ma déclaration ne soit pas correcte. Voici le code:

Code :
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
 
declare
 
cursor req_agtnat ( matricule NUMBER) IS
SELECT idf_agent FROM agtnat
WHERE idf_agent = matricule ; 
 
cursor req_agtgrd (matricule NUMBER ) IS
SELECT dat_debut,cod_posagt FROM agtgrd
WHERE idf_agent = matricule
AND dat_debut < '01/10/2008'
ORDER BY dat_debut DESC;
 
date1 agtgrd.dat_debut%type;
date2 agtgrd.dat_debut%type;
code1 agtgrd.dat_debut%type;
code2 agtgrd.dat_debut%type;
trouve BOOLEAN;
 
begin
 
open req_agtnat (10);
open req_agtgrd (10);
fetch req_agtgrd INTO date1,code1;
date2 := date1;
code2 := code1;
trouve := false;
loop
 
code1 := code2;
date1 := date2;
fetch req_agtgrd INTO date2,code2;
exit when req_agtgrd%NOTFOUND;
IF ( code2 NOT IN ( 'AC','AP','CP','AT','AD','CA','LM','BG','FO','CB','LD','MA','ES','MT','ST')
     AND code1 IN ( 'AC','AP','CP','AT','AD','CA','LM','BG','FO','CB','LD','MA','ES','MT','ST')
    )
then
dbms_output.put_line ('la date d''entrée est:'||to_char (date1,'DD-MON-YYYY'));
trouve := true;
end IF;
 
exit when 
( code2 NOT IN ( 'AC','AP','CP','AT','AD','CA','LM','BG','FO','CB','LD','MA','ES','MT','ST')
     AND code1 IN ( 'AC','AP','CP','AT','AD','CA','LM','BG','FO','CB','LD','MA','ES','MT','ST')
);
 
end loop;
 
IF NOT trouve then
dbms_output.put_line ('la date d''entrée est:'||to_char (date2,'DD-MON-YYYY'));
end IF;
 
 
end;
/
Mais à l'exécution sous Toad j'ai ça:

Citation:
Error at line 7
ORA-01858: caractère non numérique rencontré à la place d'un numérique
ORA-06512: à ligne 23
Je ne vois pas ce qui ne lui va pas. Qui pourrait éclairer ma lenterne
pascal_T est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 15h45   #2
Membre éprouvé
 
Avatar de rvfranck
 
Étudiant
Inscription : novembre 2004
Messages : 739
Détails du profil
Informations personnelles :
Localisation : Canada

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2004
Messages : 739
Points : 494
Points : 494
Es tu sûr que ça c'est correct (ligne 13 à ligne 16)?
Code :
1
2
3
4
date1 agtgrd.dat_debut%type;
date2 agtgrd.dat_debut%type;
code1 agtgrd.dat_debut%type;
code2 agtgrd.dat_debut%type;
code1 et code2 sont de quel type?
__________________
"Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang
rvfranck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 16h06   #3
Membre à l'essai
 
Avatar de pascal_T
 
Inscription : avril 2007
Messages : 95
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 95
Points : 21
Points : 21
Oh la fève que je fais
J'ai lu 50 000 fois le script et je suis passé devant à chaque fois !

Merci tu es un chef!

pascal_T est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 16h15   #4
Membre éprouvé
 
Avatar de rvfranck
 
Étudiant
Inscription : novembre 2004
Messages : 739
Détails du profil
Informations personnelles :
Localisation : Canada

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2004
Messages : 739
Points : 494
Points : 494
Y'a pas de quoi.
__________________
"Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang
rvfranck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 17h07   #5
Invité de passage
 
Inscription : septembre 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 2
Points : 2
Points : 2
Par défaut Passage de paramètre dans une procédure PL/SQL

Citation:
Envoyé par pascal_T Voir le message
J'ai mis en place un script ou je souhaite passer une valeur en paramètre au curseur, mais il semble que ma déclaration ne soit pas correcte. Voici le code:

Code :
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
 
declare
 
cursor req_agtnat ( matricule NUMBER) IS
SELECT idf_agent FROM agtnat
WHERE idf_agent = matricule ; 
 
cursor req_agtgrd (matricule NUMBER ) IS
SELECT dat_debut,cod_posagt FROM agtgrd
WHERE idf_agent = matricule
AND dat_debut < '01/10/2008'
ORDER BY dat_debut DESC;
 
date1 agtgrd.dat_debut%type;
date2 agtgrd.dat_debut%type;
code1 agtgrd.dat_debut%type;
code2 agtgrd.dat_debut%type;
trouve BOOLEAN;
 
begin
 
open req_agtnat (10);
open req_agtgrd (10);
fetch req_agtgrd INTO date1,code1;
date2 := date1;
code2 := code1;
trouve := false;
loop
 
code1 := code2;
date1 := date2;
fetch req_agtgrd INTO date2,code2;
exit when req_agtgrd%NOTFOUND;
IF ( code2 NOT IN ( 'AC','AP','CP','AT','AD','CA','LM','BG','FO','CB','LD','MA','ES','MT','ST')
     AND code1 IN ( 'AC','AP','CP','AT','AD','CA','LM','BG','FO','CB','LD','MA','ES','MT','ST')
    )
then
dbms_output.put_line ('la date d''entrée est:'||to_char (date1,'DD-MON-YYYY'));
trouve := true;
end IF;
 
exit when 
( code2 NOT IN ( 'AC','AP','CP','AT','AD','CA','LM','BG','FO','CB','LD','MA','ES','MT','ST')
     AND code1 IN ( 'AC','AP','CP','AT','AD','CA','LM','BG','FO','CB','LD','MA','ES','MT','ST')
);
 
end loop;
 
IF NOT trouve then
dbms_output.put_line ('la date d''entrée est:'||to_char (date2,'DD-MON-YYYY'));
end IF;
 
 
end;
/
Mais à l'exécution sous Toad j'ai ça:



Je ne vois pas ce qui ne lui va pas. Qui pourrait éclairer ma lenterne

Ton code est bon.
ON ne peut exécuté une procédure pl/sql qui a un paramètre en entrée avec la version 10g de TOAD .
Télécharges SQLDEVELOPER et lance ta procédure, elle s'exécutera.

ESFA92
ESFA92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2008, 17h11   #6
Invité de passage
 
Inscription : septembre 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 2
Points : 2
Points : 2
Ton code est bon.
On ne peut pas exécuté une procédure pl/sql qui a un paramètre en entrée ou en sortie avec la version 10 g d' oracle sous TOAD.
Télécharge sqldeveloper et lance ta procédue .
ESFA92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h30.


 
 
 
 
Partenaires

Hébergement Web