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
| Create or Replace Procedure Pointage (
nPers_id IN Number
, tCurrent IN TimeStamp
, pResult OUT pls_Integer
)
Is
nTest Number ;
tLimitTime TimeStamp := to_timestamp( bla bla bla... la limite à considérer pour après-midi) ;
Begin
-- on commence par le test d'existence, encapsulé dans un bloc Begin / End pour pouvoir avoir un bloc "Exception" juste pour cette partie
Begin
Select id_pers
Into nTest
From journee
Where (
hdeb_matin_jour = aujourdhui -- (je te laisse coder une peu quand même)
Or
hdeb_am_jour = aujourdhui -- on teste aussi l après-midi, si qqun avait congé le matin)
)
And id_pers = nPers_id ; -- c'est la paramètre IN no 1
Exception
When No_data_found -- la ligne n'existe pas
Then
Insert into journee
Values ( bla, bla, bla) ;
End ;
-- ensuite on teste les heures
Begin
If comparaison entre tCurrent (le paramète IN no2) et tLimitTime
Then
le traitement approprié ... dépend du test que tu fais en dessus ;-) ;
Elsif un éventuel autre test...
Then
un autre insert, update ou autre...
End If ;
End ;
Commit ;
pResult := 1 ; -- succès !!
Exception
When Others -- toute exception non gérée plus haut
Then
Rollback ;
pResult := 0 ; -- Echec !
End ; |
Partager