Problème de type sur une vue avec union
Igmarh
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour
j'ai un problème sur le type d'une colonne dans une vue comportant un union
CREATE TABLE table_name (column_name NUMBER(10));
[insertion de rangées dans la table]
CREATE OR REPLACE FORCE VIEW view_name (column_name) AS SELECT column_name FROM table_name; -> OK view_name.column_name est de type number(10)
CREATE OR REPLACE FORCE VIEW view_name (column_name) AS SELECT column_name FROM table_name WHERE column_name<10 UNION SELECT column_name FROM table_name WHERE column_name>=10; -> idem OK
CREATE OR REPLACE FORCE VIEW view_name (column_name) AS SELECT column_name FROM table_name WHERE column_name<10 UNION SELECT NULL FROM table_name WHERE column_name>=10; -> KO view_name.column_name est de type number tout court, j'ai perdu le "(10)"
j'ai fait d'autres essais avec lesquels je n'obtient pas number(10) mais number tout court :
CREATE OR REPLACE FORCE VIEW view_name (column_name) AS SELECT CAST(column_name AS NUMBER(10)) FROM table_name WHERE column_name<10 UNION SELECT CAST(NULL AS NUMBER(10)) FROM table_name WHERE column_name>=10;
CREATE OR REPLACE FORCE VIEW view_name (column_name) AS SELECT CAST(column_name AS NUMBER(10)) FROM table_name WHERE column_name<10 UNION SELECT CAST(column_name AS NUMBER(10)) FROM table_name WHERE column_name>=10;
j'ai trouvé la solution suivante :
CREATE OR REPLACE FORCE VIEW view_name (column_name) AS SELECT CAST(column_name AS NUMBER(10)) FROM
(SELECT column_name column_name FROM table_name WHERE column_name<10 UNION SELECT column_name column_name FROM table_name WHERE column_name>=10);
mais pas très esthétique, et de plus celà engendre un temps de réponse légèrement supérieur
Quelqu'un aurait-il une solution pour forcer le type de ma colonne à number(10) ?
d'avance merci
j'ai un problème sur le type d'une colonne dans une vue comportant un union
CREATE TABLE table_name (column_name NUMBER(10));
[insertion de rangées dans la table]
CREATE OR REPLACE FORCE VIEW view_name (column_name) AS SELECT column_name FROM table_name; -> OK view_name.column_name est de type number(10)
CREATE OR REPLACE FORCE VIEW view_name (column_name) AS SELECT column_name FROM table_name WHERE column_name<10 UNION SELECT column_name FROM table_name WHERE column_name>=10; -> idem OK
CREATE OR REPLACE FORCE VIEW view_name (column_name) AS SELECT column_name FROM table_name WHERE column_name<10 UNION SELECT NULL FROM table_name WHERE column_name>=10; -> KO view_name.column_name est de type number tout court, j'ai perdu le "(10)"
j'ai fait d'autres essais avec lesquels je n'obtient pas number(10) mais number tout court :
CREATE OR REPLACE FORCE VIEW view_name (column_name) AS SELECT CAST(column_name AS NUMBER(10)) FROM table_name WHERE column_name<10 UNION SELECT CAST(NULL AS NUMBER(10)) FROM table_name WHERE column_name>=10;
CREATE OR REPLACE FORCE VIEW view_name (column_name) AS SELECT CAST(column_name AS NUMBER(10)) FROM table_name WHERE column_name<10 UNION SELECT CAST(column_name AS NUMBER(10)) FROM table_name WHERE column_name>=10;
j'ai trouvé la solution suivante :
CREATE OR REPLACE FORCE VIEW view_name (column_name) AS SELECT CAST(column_name AS NUMBER(10)) FROM
(SELECT column_name column_name FROM table_name WHERE column_name<10 UNION SELECT column_name column_name FROM table_name WHERE column_name>=10);
mais pas très esthétique, et de plus celà engendre un temps de réponse légèrement supérieur
Quelqu'un aurait-il une solution pour forcer le type de ma colonne à number(10) ?
d'avance merci
A voir également:
- Problème de type sur une vue avec union
- Vue satellite en direct gratuit de ma maison - Guide
- Vue de profil instagram - Guide
- Trait d'union insécable word - Guide
- Comment retrouver une publication vue sur facebook - Guide
- Vue de profil facebook - Guide
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir,
je suis surpris que ceci te convienne:
je te suggère d'expliquer ce que tu veux réaliser.
je suis surpris que ceci te convienne:
CREATE OR REPLACE FORCE VIEW view_name (column_name) AS SELECT CAST(column_name AS NUMBER(10)) FROM (SELECT column_name column_name FROM table_name WHERE column_name<10 UNION SELECT column_name column_name FROM table_name WHERE column_name>=10);
je te suggère d'expliquer ce que tu veux réaliser.