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 01/07/2011, 11h02   #1
Invité de passage
 
Inscription : juillet 2011
Messages : 1
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 1
Points : 0
Points : 0
Par défaut Requête d'initialisation d'une table

Bonjour,

Débutant en la matière je cherche à réaliser une initialisation conditionnelle d'un nouveau champ que je crée dans ma table sous SQL Developer.

Je m'explique, je réalise l'opération suivante :

Code :
1
2
3
4
5
6
 
ALTER TABLE MATABLE
DROP NOUVEAUCHAMP;
 
ALTER TABLE MATABLE
ADD NOUVEAUCHAMP varchar2(1) DEFAULT '0';
Je dispose d'un champ dans ma table que je vais appeler CHAMP_DATE contenant des dates au format number (jjmmaaaa) je souhaiterai initialiser mon champ NOUVEAUCHAMP à '9' si la date contenue dans CHAMP_DATE est inférieure au 1er janvier 2012 ou à '0' dans les autres cas.

Avez vous une idée de la manière de procéder ?
Demorgh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 11h45   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Citation:
Envoyé par Demorgh Voir le message
Je dispose d'un champ dans ma table que je vais appeler CHAMP_DATE contenant des dates au format number (jjmmaaaa)
Ça commence mal, pourquoi ne pas enregistrer cette donnée au format date ?
C'est fait pour.

Default ne permet que l'utilisation d'une expression simple, je pense qu'il vous faudra créer un déclencheur sur votre table.

Edit : la documentation Oracle précise :
Citation:
DEFAULT

The DEFAULT clause lets you specify a value to be assigned to the column if a subsequent INSERT statement omits a value for the column. The data type of the expression must match the data type of the column. The column must also be long enough to hold this expression.

The DEFAULT expression can include any SQL function as long as the function does not return a literal argument, a column reference, or a nested function invocation.

Restriction on Default Column Values
A DEFAULT expression cannot contain references to PL/SQL functions or to other columns, the pseudocolumns CURRVAL, NEXTVAL, LEVEL, PRIOR, and ROWNUM, or date constants that are not fully specified.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2011, 17h07   #3
Membre expérimenté
 
Homme Mohamed Houri
Inscription : mars 2010
Messages : 286
Détails du profil
Informations personnelles :
Nom : Homme Mohamed Houri
Localisation : France

Informations forums :
Inscription : mars 2010
Messages : 286
Points : 563
Points : 563
Citation:
Envoyé par Demorgh Voir le message
Bonjour,

Je dispose d'un champ dans ma table que je vais appeler CHAMP_DATE contenant des dates au format number (jjmmaaaa)
Vous n'allez quand même pas faire cela!!!!

je vous prie de toujours mettre

(a) les dates dans les dates
(b) les caractères dans les caractères
(c) les nombres dans les nombres

Votre design sera bien renforcé

Bien cordialement

Mohamed Houri
Mohamed.Houri est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h58.


 
 
 
 
Partenaires

Hébergement Web