Problem med import af Image
Jeg har et problem med at få vores Oracle 8.1.6 på Windows NT til at importere billeder.Jeg har udført følgende :
-------------------------------
-- DIRECTORY oprettet som bruger INTERNAL
CREATE OR REPLACE DIRECTORY TESTDIR AS \'F:\\test\';
GRANT READ ON DIRECTORY TESTDIR TO DAT;
-- Tabel oprettet som bruger DAT
CREATE TABLE TESTBILLEDER (
BILLEDNAVN VARCHAR2 (20),
BILLEDE ORDSYS.ORDIMAGE
)
LOB (BILLEDE.SOURCE.LOCALDATA) STORE AS
(TABLESPACE WEBDATA)
TABLESPACE WEBDATA;
-- Test-procedure oprettet som bruger DAT
CREATE OR REPLACE PROCEDURE TestImportBillede(BilledNavn IN VARCHAR2, FilNavn IN VARCHAR2) IS
TestRowId ROWID;
Image ORDSYS.ORDIMAGE;
Ctx RAW(4000) := NULL;
BEGIN
INSERT INTO TESTBILLEDER VALUES (
BilledNavn,
ORDSYS.ORDIMAGE(
ORDSYS.ORDSOURCE(
EMPTY_BLOB(),
\'file\',
\'TESTDIR\',
FilNavn,
SYSDATE,
1
),
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
)
) RETURNING TESTBILLEDER.ROWID INTO TestRowId;
SELECT TESTBILLEDER.BILLEDE
INTO Image
FROM TESTBILLEDER
WHERE TESTBILLEDER.ROWID = TestRowId
FOR UPDATE;
-- Output af detaljer for Image objektet
DBMS_OUTPUT.PUT_LINE(Image.getSource());
DBMS_OUTPUT.PUT_LINE(Image.getSourceType());
DBMS_OUTPUT.PUT_LINE(Image.getSourceLocation());
DBMS_OUTPUT.PUT_LINE(Image.getSourceName());
-- Udfører import - det er her fejlen opstår !!
Image.Import(Ctx);
Image.SetProperties;
UPDATE TESTBILLEDER
SET TESTBILLEDER.BILLEDE = Image
WHERE TESTBILLEDER.ROWID = TestRowId;
COMMIT;
END TestImportBillede;
-- Procedure testet som bruger DAT
BEGIN
TestImportBillede(\'Stregkode\',\'barcode.gif\');
END;
-------------------------------
Det ovenstående kald til TestImportBillede giver følgende DBMS Output :
file://TESTDIR/BARCODE.GIF
file
TESTDIR
BARCODE.GIF
Og følgende fejlkode opstår ved: Image.Import(Ctx) :
ORA-28575: unable to open RPC connection to external procedure agent
ORA-06512: at \"ORDSYS.ORDIMG_PKG\", line 420
ORA-06512: at \"ORDSYS.ORDIMAGE\", line 25
ORA-06512: at \"ORDSYS.ORDIMG_PKG\", line 498
ORA-06512: at \"ORDSYS.ORDIMAGE\", line 169
ORA-06512: at \"DAT.TESTIMPORTBILLEDE\", line 38
ORA-06512: at line 1
Jeg fik den idé ved at se at Image.getSource() var \'file://TESTDIR/BARCODE.GIF\', at stien, som TESTDIR var oprettet med måske blev substitueret ind i den streng. Ved at eksperimentere på NT-maskinen fandt jeg ud af, at det der skulle være i strengen på TESTDIR\'s plads, var \'/F:/test\', så vidt jeg kunne se. Så det prøvede jeg at ændre directoryet til :
-------------------------------
-- DIRECTORY ændret som bruger INTERNAL
CREATE OR REPLACE DIRECTORY TESTDIR AS \'/F:/test\';
-- Procedure testet som bruger DAT
BEGIN
TestImportBillede(\'Stregkode\',\'barcode.gif\');
END;
-------------------------------
Det nye kald til TestImportBillede giver følgende DBMS Output (det samme som før) :
file://TESTDIR/BARCODE.GIF
file
TESTDIR
BARCODE.GIF
Men fejlkoden bliver nu til en helt anden :
ORA-06510: PL/SQL: unhandled user-defined exception
ORA-06512: at \"ORDSYS.ORDSOURCE\", line 179
ORA-22288: file or LOB operation FILEOPEN failed
The device does not recognize the command.
ORA-06512: at \"ORDSYS.ORDIMG_PKG\", line 484
ORA-06512: at \"ORDSYS.ORDIMAGE\", line 169
ORA-06512: at \"DAT.TESTIMPORTBILLEDE\", line 38
ORA-06512: at line 1
Nogen gode idéer ???