|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 86 ![]() |
Salut,
je suis sur Oracle Release 9.0.1.0.1 Je désire crée une vue sur les tables : EMP( EMPNO NOT NULL NUMBER(4), ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) ) PHOTO( ID NOT NULL NUMBER(7) , DESC VARCHAR2(30), TYPE VARCHAR2(30), BLOB NOT NULL LONG RAW, EMPNO NOT NULL NUMBER(4) ) EMP( EMPNO , ENAME , JOB , MGR , HIREDATE , SAL , COMM , DEPTNO ) PHOTO( ID , DESC , TYPE , BLOB , EMPNO ) Les tables contiennent respectivement : - données de l’employé - photos des employés, plus une photo spéciale (cliché vide identifié par PHOTO.ID = 0 et PHOTO.EMPNO = 0 qui contient le texte « Photo Non Disponible »). J’ai crée une vue comme suit : Code : CREATE OR REPLACE VIEW PH_VIEW_DEPT (V_EMPNO, V_DEPTNO, V_ID, V_BLOB) AS SELECT EMP.EMPNO, EMP.DEPTNO, PHOTO.ID, PHOTO.BLOB FROM PHOTO,EMP WHERE ( EMP.EMPNO = PHOTO.EMPNO(+) ) WITH READ ONLY PH_VIEW_DEPT (V_EMPNO, V_DEPTNO, V_ID, V_BLOB ) NB: “EMP.EMPNO = PHOTO.EMPNO(+)” pour ramené aussi les employé qui n’ont pas de photo (je crois jointure externe) C'est fonctionnel et elle me ramène les photos des agents (ceux qui ont des photos) pour les autres qui n'ont pas, les champs PHOTO.ID et PHOTO.BLOB sont nulle, je désire modifié le verbe select de ma vue a fin de ramené pour les employés n'ayant pas de photos le cliché vide "PHOTO.id=0". Je trouve pas comment procéder, s'il vous plait aidez-moi. Merci. PS: j'ai simplifié le problème avec les tables demos d'oracle, pour ensuite l'adapter pour mes tables. |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
tu veux quoi ? Avoir photo.id égale à 0 à la place de NULL quand il n'y a pas de photo ou exclure les lignes des employés qui n'ont pas de photo ?
PS : merci d'utiliser les balises CODE et QUOTE plus lisible même si tu mets des couleurs |
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 320 ![]() |
La fonction Nvl te permet de remplacer une "valeur" NULL par une autre valeur.
|
|
|
00
|
|
|
#4 | |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 86 ![]() |
Citation:
Dans NVL tu donne explicitement la valeur qui va remplacer null, or la valeur que je désire est dans la table photo ( PHOTO.BLOB) |
|
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 320 ![]() |
|
|
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 86 ![]() |
C'est pour le besoin d'une form (forms 6), car l'item image n'est peupler que suite a une interogation execute_query alors ce cliché vide doit etre dans la vue, forms n'accepte pas le code select BLOB into :BLOCK.ITEM from table (avec :BLOCK.ITEM de type image)
Merci. et encore merci pour m'avoir répondu aussi vite. |
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 86 ![]() |
|
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
euh... ouais mais si photo.id est NULL comment tu sais quel photo faut aller prendre dans la table Photo ?
|
|
|
00
|
|
|
#9 | |||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
Code :
|
|||
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 86 ![]() |
C'est tout a fait ça, quand c'est null je doit joindre avec les données de l'employé la photo portant l' ID = 0 et son BLOB qui est le cliché vide et elle est dans la table avec le reste des photos
|
|
|
00
|
|
|
#11 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 86 ![]() |
Je vais tester et je reposte
Merci |
|
|
00
|
|
|
#12 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 86 ![]() |
J'ai l'erreur suivante lors de la crétion de la vue :
0, (SELECT PHOTO.BLOB FROM PHOTO WHERE id=0) * ERROR at line 6: ORA-00997: illegal use of LONG datatype |
|
|
00
|
|
|
#13 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
t'as lancé EXACTEMENT la même requête ? T'as pas remplacé UNION ALL par UNION ou ajouter un DISTINCT ou ORDER BY ?
|
|
|
00
|
|
|
#14 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 86 ![]() |
J'ai fait exactement comment vous avez mentionner, aucun additif.
j'ai toujours SELECT EMP.EMPNO, EMP.DEPTNO, 0, (SELECT PHOTO.BLOB FROM PHOTO WHERE id=0) _______________________________________ * ERROR at line 6: ORA-00997: illegal use of LONG datatype |
|
|
00
|
|
|
#15 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 86 ![]() |
Si je remplace par :
ALTER TABLE "PHOTO" MODIFY("BLOB" BLOB) La vue est crée pas de problème mais est il possible de preserver le LONG RAW comme type pour PHOTO.BLOB ? Merci. |
|
|
00
|
|
|
#16 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 86 ![]() |
Je veux préserver le LONG RAW comme type pour PHOTO.BLOB, mes CANVAS de FORMS6 utilise des item image basé sur ce type de champs, comment je fait autrement sans le type BLOB.
Merci. |
|
|
00
|
|
|
#17 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Pourquoi tu veux un LONG RAW alors que le type BLOB est fait pour justement stocker des fichiers binaires
|
|
|
00
|
|
|
#18 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 86 ![]() |
Salut,
J'ai déjà posté sur le sous-forum Forms, et comme j'ai pas trouvé de solution j'ai posté ici et j'ai respecter la charte en posant le problème uniquement coté SQL. En plus j'utilise la built-in read_image_file() sur FORMS6, avec un BLOB je ne sait pas comment y parvenir a lire & écrire des photos dans ma base de données. En lisant le tutoriel d'Helyos sur les larges objects, le package dbms_lob est indispensable mais je le possède pas. Merci. |
|
|
00
|
|
|
#19 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
tu dois l'installer. Exécute <ORACLE_HOME>\rdbms\admin\dbmslob.sql
pour info : http://download.oracle.com/docs/cd/A...mds.htm#104177 |
|
|
00
|
|
|
#20 | ||
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 86 ![]() |
En gardant le meme traitement pour un LONG RAW que voici :
Code :
j'ecrit une photos dans ma table, après une interrogation execute_query, elle me ramène les information concerant la photos(emp, desc, type) mais pas la photo : l'item reste vide comment je fait ? Merci. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com