#1 Wed 18 August 2010 09:09
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Create View un peu particulier
Aloha
Je souhaite créer une vue dans ma base Oracle qui ne reprendrait que certains champs de mes tables (jusqu'ici rien que du banal) mais qui aurait aussi comme caractéristique d'avoir des champs moins long que la table originale.
Mes tables origine ont des VARCHAR2(4000) (limite jamais atteinte !), et je souhaiterai avoir des champs VARCHAR2(255) dans ma vue, comment faire ?
D'avance, merci pour votre aide,
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#2 Wed 18 August 2010 10:26
Re: Create View un peu particulier
Bonjour,
je ne connais pas oracle mais dans une base de données comme postgresql, on fait
CREATE VIEW ma_vue
AS SELECT substring(mon_attribut from 1 for 255) AS mon_attribut
FROM ma_table;
Mais je ne sais pas si une telle syntaxe existe sur oracle.
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#3 Wed 18 August 2010 11:08
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Create View un peu particulier
Bonjour,
je ne connais pas oracle mais dans une base de données comme postgresql, on fait
CREATE VIEW ma_vue
AS SELECT substring(mon_attribut from 1 for 255) AS mon_attribut
FROM ma_table;
Mais je ne sais pas si une telle syntaxe existe sur oracle.
Bonjour,
S'agit-il de tronquer le contenu de la colonne, ou de changer le type de la colonne ?
dans cet exemple, le contenu sera tronqué, mais le type de la colonne sera tjs varchar(4000), non ?
Je vois ca, apres une recherche rapide [1]:
CREATE OR REPLACE VIEW tomview
AS
SELECT
col1, col2,
cast(NVL(RTRIM(col1),0) AS NUMBER) col1_numb
FROM tomtest
Utilisation de l'operateur cast, pour modifier le type de la colonne.
[1] http://www.freelists.org/post/oracle-l/ … datatype,5
Nicolas
Hors ligne
#4 Wed 18 August 2010 11:17
Re: Create View un peu particulier
Bonjour Nicolas,
en effet, le type ne sera pas changé (en fait sur postgres il passe de character varying à test).
Il faut donc "caster" la colonne.
Toujours pour postgresql :
CREATE VIEW ma_vue
SELECT CAST(substring(mon_attribut from 1 for 255) AS character varying(255)) AS mon_attribut
FROM ma_table;
OU
CREATE VIEW ma_vue
AS SELECT substring(mon_attribut from 1 for 255)::character varying(255) AS mon_attribut
FROM ma_table;
Mathieu BOSSAERT
Association GeoRezo
Hors ligne