oracle8 & blob
Vojtech Novacek
linux na netcore.cz
Středa Květen 3 21:35:59 CEST 2000
On Wed, 3 May 2000, Michal [iso-8859-2] Helán wrote:
> Muze mi nekdo (pokud mozno podrobne) poradit jak vlozit do tabulky blob
> (obrazek)?
> Prave zkoumam moznosti data image cartridge, a celkem v tom tapu.
>
> Diky
> Michal Helan
Pomoci InterMedia Image napr. takto:
-- vytvoreni tabulky
CREATE TABLE images(
image_id NUMBER NOT NULL,
s_image ORDSYS.ORDImage, -- obrazek se
ulozi cely do db
l_image ORDSYS.ORDImage, -- ulozi se pouze
metadata
CONSTRAINT pk_images PRIMARY KEY (image_id)
);
CREATE SEQUENCE seq_images;
-- adresar, kde jsou obrazky fyzicky ulozeny
CREATE DIRECTORY IMGDIR AS '/nekde/tady';
-- pod systemovym uctem si pridame prava
GRANT READ ON DIRECTORY IMGDIR to my_account;
-- sql blok, ktery vlozi obrazek
-- a) cely do databaze(mensi obrazky)
-- b) pouze metadata(velke obrazky)
DECLARE
img_num NUMBER;
img ORDSYS.ORDImage;
ctx RAW(4000) := NULL;
BEGIN
SELECT seq_images.NEXTVAL INTO img_num FROM DUAL;
INSERT INTO images VALUES(img_num,
-- s_image
ORDSYS.ORDImage(ORDSYS.ORDSource(empty_blob(), NULL, NULL,
NULL, SYSDATE, 1), NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-- l_image
ORDSYS.ORDImage(ORDSYS.ORDSource(empty_blob(), 'file',
'IMGDIR', 'obrazek.jpg', SYSDATE, 0), NULL, NULL, NULL, NULL, NULL, NULL,
NUll));
SELECT s_image INTO img FROM images WHERE image_id = image_num FOR
UPDATE;
img.importFrom(ctx, 'file', 'IMGDIR', 'obrazek.jpg');
UPDATE images SET s_image = img WHERE image_id = image_num;
SELECT l_image INTO img FROM images WHERE image_id = image_num FOR
UPDATE;
img.importFrom(ctx, 'file', 'IMGDIR', 'obrazek.jpg');
img.serProperties;
UPDATE image SET l_image = img WHERE image_id = image_num;
COMMIT;
END;
Jinak se muzete podivat napr. na
http://technet.oracle.com/doc/inter.815/a67299/mm_uses.htm kde jsou dalsi
priklady
S pozdravem
_---------------------------------------
Vojtech Novacek _-
--------------------------------
Další informace o konferenci Test