{Oracle} Oracle ( constante )
Yofa
-
Évidemment -
Évidemment -
Bonjour,
Alors voila! Ca peux paraître très bête comme question mais je ne trouves pas la réponse sur google...
J'ai un programme Oracle qui reste le même a chaque fois à l'exception d'une constante qui est le MOIS de l'extraction des données!
Le mois étant repris a plusieurs reprise dans le programme ( 7 a 8 fois ), je souhaiterais poser une constante 'MOIS' en début de programme pour un gain de temps et pour eviter les erreurs d'oubli...
Exemple : Constante MOIS = 'Mars'
select ...
From ...
Where Moisextraction = MOIS ...
En vous remerciant de vos reponses!
Alors voila! Ca peux paraître très bête comme question mais je ne trouves pas la réponse sur google...
J'ai un programme Oracle qui reste le même a chaque fois à l'exception d'une constante qui est le MOIS de l'extraction des données!
Le mois étant repris a plusieurs reprise dans le programme ( 7 a 8 fois ), je souhaiterais poser une constante 'MOIS' en début de programme pour un gain de temps et pour eviter les erreurs d'oubli...
Exemple : Constante MOIS = 'Mars'
select ...
From ...
Where Moisextraction = MOIS ...
En vous remerciant de vos reponses!
A voir également:
- {Oracle} Oracle ( constante )
- Oracle america inc virus ✓ - Forum Virus
- Telecharger oracle virtualbox - Télécharger - Émulation & Virtualisation
- Taille tablespace oracle - Forum Oracle
- Find oracle sid ✓ - Forum Bases de données
- Oracle 904 ✓ - Forum Bases de données
1 réponse
salut
tout d'abord, sache que la constante n'existe pas en PL/QSL. C'est à toi d'écrire du code qui ne modifie pas tes variables. tu peux adopter une méthode 'à la hongroise' et préfixer d'un k les identificateurs des variables que tu souhaites constantes, mais tu n'auras guère plus de protection
une méthode trrrès tirée par les cheveux serait de stocker ta constante dans une table et d'inclure cette table dans tes requêtes (la modification de cette valeur n'interviendrait que sur update et non avec une simple affectation). Mais si on est un tant soit peu réaliste, on se contente de faire attention (si les automates savaient faire attention, ils travailleraient à notre place)
1. tu désires une réelle constante
avant ton begin, poses une section DECLARE dans laquelle tu déclares une variable que tu initialises (et que tu ne toucheras plus dans ton code)
2. tu désires un constante "fonction de l'environnement", par ex une date horizon
/!\ si le code se trouve dans un trigger => pas de mot-clé declare
tout d'abord, sache que la constante n'existe pas en PL/QSL. C'est à toi d'écrire du code qui ne modifie pas tes variables. tu peux adopter une méthode 'à la hongroise' et préfixer d'un k les identificateurs des variables que tu souhaites constantes, mais tu n'auras guère plus de protection
une méthode trrrès tirée par les cheveux serait de stocker ta constante dans une table et d'inclure cette table dans tes requêtes (la modification de cette valeur n'interviendrait que sur update et non avec une simple affectation). Mais si on est un tant soit peu réaliste, on se contente de faire attention (si les automates savaient faire attention, ils travailleraient à notre place)
1. tu désires une réelle constante
avant ton begin, poses une section DECLARE dans laquelle tu déclares une variable que tu initialises (et que tu ne toucheras plus dans ton code)
create or replace procedure updMauvaisClients as declare nStatut number := 90; begin ...
2. tu désires un constante "fonction de l'environnement", par ex une date horizon
create or replace function heuresPrevues(
paramCentre schema.commandes.centre%type
) return number
declare
kHorizon date; -- le k pour se rappeler qu'il faut pas lui affecter une valeur
begin
select trunc(max(dtLivPrevue)+30, 'MM')
into kHorizon
from schema.commandes
where statut>=40
and centre = paramCentre;
-- maintenant que kHorizon est initialisée, on n'y touche plus
...
/!\ si le code se trouve dans un trigger => pas de mot-clé declare