A voir également:
- {Oracle} Oracle ( constante )
- Violation de contrainte unique oracle - Forum Programmation
- Oracle liste des tables ✓ - Forum Programmation
- Double oracle - Forum Oracle
- Oracle america inc mac - Forum Logiciels
- Taille tablespace oracle - Forum Oracle
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