Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#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

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1228
Site web

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: 1538

Re: Create View un peu particulier

Mathieu BOSSAERT a écrit:

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

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1228
Site web

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

 

Pied de page des forums

Powered by FluxBB