Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Problem mit Intermedia - ORDimage

Empfohlene Antworten

Veröffentlicht

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!

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

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

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

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. :-(

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.