Chriss007 Geschrieben 8. Mai 2002 Teilen Geschrieben 8. Mai 2002 Hallo! Habe ein Problem: Ich wollte/will Bilder (.jpg) in einer Oracle 817 Datenbank abspeichern. Nach langem Durchsuchen des Internets bin ich dann auf auf die Stichpunkte Intermedia und ORDimage gestoßen. Außerdem habe ich folgende Schritte gefunden um Bilder in die DB zu speichern: 1. Schritt (Tabelle anlegen): create table imedia ( sno number(4), image ordsys.ordimage ) / 2.Schritt (Directory anlegen): CREATE OR REPLACE DIRECTORY IMG AS 'C:\IMG'; 3.Schritt (Bild in die Datenbank laden): 1 DECLARE 2 pict ORDSYS.ORDIMAGE; 3 ctx RAW(4000); 4 BEGIN 5 SELECT i.image INTO pict from imedia i 6 WHERE i.sno = 1 FOR UPDATE; 7 pict.setSource('FILE','IMG','bild.jpg'); 8 pict.import(ctx); 9 UPDATE IMEDIA i SET i.imAgE = pict WHERE i.SNO=1; 10 END; 11 / Das Bild, welches ich in die DB laden möchte befindet sich im Verzeichnis IMG auf dem Laufwerk C, also "C:\IMG". Doch leider bekomme ich jedes Mal wenn ich Schritt 3 auführe, folgende Fehlermeldung von SQL zurück: FEHLER in Zeile 1: ORA-01403: Keine Daten gefunden ORA-06512: in Zeile 5 SQL findet also die Bilddatei nicht!? Kennt sich jemand damit aus, muss ich noch irgendetwas Wichtiges einstellen, um Bilder in die DB laden zu können? Würde mich um eure Beiträge freuen... Danke schonmal im Voraus! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Denise Geschrieben 10. Mai 2002 Teilen Geschrieben 10. Mai 2002 Hallo, du musst auch natuerlich indezieren, dann findest du auch was. wenn du nichts findest, wie mann intermediaindezes anlegt, schicke ich dir einen beispiel... ist eigentlich easy. P.S.: das thema hatten wir hier schon , suche doch mal... Denise Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Chriss007 Geschrieben 12. Mai 2002 Autor Teilen Geschrieben 12. Mai 2002 Hi Denise! Erstmal Danke für deine Antwort! Könntest du mir vielleicht das Beispiel über intermediaindezes schicken oder unter meinen Beitrag schreiben? Hätte da aber noch ein zweites Problem: Wenn ich die Bilder dann in einer Tabelle in der DB gespeichert habe, wie bekommen ich diese dann wieder in einem HTML-Frontend ausgeben? Habe zwar jede Menge Seiten im Netz gefunden, wie dies mit PHP funktioniert aber keine einzige Seite mit PL/SQL. Könntest du mit da vielleicht weiterhelfen? Na dann, noch einen schönen Tag! CU und Danke! Chriss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Denise Geschrieben 12. Mai 2002 Teilen Geschrieben 12. Mai 2002 Hallo Criss!!! Versuch mal damit... wenns doch zuwenig wird habe dir ja ne nachricht geschickt... CREATE TABLE file_ds (id number(8) PRIMARY KEY, docs varchar2(60)) / INSERT INTO file_ds VALUES (1000, 'C:\1.htm'); INSERT INTO file_ds VALUES (1001, 'C:\2.htm'); commit; CREATE INDEX idt_file_ds on file_ds (docs) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('DATASTORE CTXSYS.FILE_DATASTORE') / wenn du dann noch nachtraeglich was insertest, musst du noch folgenden befehl abgeben: ALTER INDEX idt_file_ds REBUILD ONLINE('SYNC'); Gruesse Denise Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
twin Geschrieben 13. Mai 2002 Teilen Geschrieben 13. Mai 2002 Hi, http://www.fachinformatiker-world.de/forums/showthread.php?threadid=8865&highlight=ORDImage twin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Chriss007 Geschrieben 13. Mai 2002 Autor Teilen Geschrieben 13. Mai 2002 Hi Denise! Nein, die Bilder sollten nicht extern gespeichert werden. Über die Performance mache ich mir auch weniger Sorgen, da es sehr "kleine" Bilder sind. Aber habe es jetzt hinbekommen die Bilder in der Datenbank zu speichern: ---- Anlegen der Tabelle Pictures create table pictures ( id number, image ordsys.ordimage ); ---- Directory anlegen create or replace directory imgdir as 'c:\test\'; ---- Sequence anlegen create sequence imageseq start with 1; ---- Bild in DB speichern create or replace procedure load_image_ipix(file_name varchar) AS obj ORDSYS.ORDImage; nxtSeq number; ctx raw(4000):=null; BEGIN select imageseq.nextval into nxtseq from dual; insert into pictures (id, image) values (nxtseq, ORDSYS.ORDImage (ORDSYS.ORDSOURCE(EMPTY_BLOB(), NULL,NULL,NULL,SYSDATE,NULL), NULL,NULL,NULL,NULL,NULL,NULL,NULL)); select t.image into obj from pictures t where t.id = nxtseq for update; obj.setProperties('height=320 width=240 mimeType=application/x-ipix'); obj.importFrom(ctx,'FILE','IMGDIR','bild.jpg'); update pictures t set t.image=obj where t.id = nxtseq; commit; END; / Na gut, das hat geklappt. Aber wie kann ich das Bild mit Hilfe von PL/SQL im Browser ausgeben? Habe dazu auch schon das komplette Forum durchsucht, doch leider nichts gefunden. :-( Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.