2016-11-07 2 views
0

J'essaie de sélectionner des octets à partir de la base de données Oracle et de les convertir en fichier image. Lorsque j'ai écrit la procédure Oracle, il s'arrête dans UTL_FILE.fopen et renvoie une erreur ORA-29280. La communauté Oracle indique que cette erreur est due au fait que l'utilisateur au niveau du système d'exploitation n'a peut-être pas l'autorisation d'écrire dans un dossier, ou que nous devons utiliser upper_cases. Mais pour la suggestion 1, j'ai essayé d'accéder au même dossier en utilisant .Net et le fichier image a été créé avec succès, pour la suggestion 2 j'ai essayé d'utiliser des majuscules mais je suis toujours confronté à la même erreur. Quel pourrait être le problème? Pourquoi je peux créer un fichier à partir de .Net mais pas d'Oracle? Ci-dessous mon code:Impossible d'ouvrir le fichier à partir d'oracle

CREATE OR REPLACE PROCEDURE BLOB_UPDATE (file_name in varchar) IS 

    file_ref UTL_FILE.file_type; 
    raw_max_size constant number := 32767; 

begin 

    file_ref := UTL_FILE.fopen('C:\LOB', file_name, 'WB', raw_max_size); 
    -- Here it stops working ! -- 
    .... 
    utl_file.fclose(file_ref); 

END BLOB_UPDATE; 
+0

Oracle est installé localement sur votre appareil ou » re utilisant DB à distance? – Kacper

+0

Non @Kacper, il n'est pas installé sur ma machine –

Répondre

0

S'il vous plaît exécuter sur votre DB:

create or replace directory DIR as 'C:\LOB' 
grant read, write on directory DIR to your_user 

Et puis le répertoire d'accès dans votre procédure par:

file_ref := UTL_FILE.fopen('DIR', file_name, 'WB', raw_max_size); 
+0

Désolé mais je ne comprends pas ce que vous voulez dire par votre utilisateur et où je dois ajouter le code ci-dessus, devrait-il être avant de créer une procédure oracle ou à l'intérieur? Désolé pour ma question mais je suis toujours un débutant dans Oracle –

+0

@ H.Al: De PL/SQL, vous ne pouvez accéder à aucun répertoire ou fichier aléatoire. Vous avez seulement accès aux répertoires que vous avez déclarés ('CREATE DIRECTORY XXX AS ...') et vous avez accordé les droits nécessaires avant de les utiliser. Et vous devez vous référer à eux par le nom symbolique ('XXX' dans le cas ci-dessus). Sinon, vous obtenez l'erreur ORA-29280. – Codo

+0

@Kacper J'ai découvert maintenant ce que vous voulez dire par your_user et que votre code devrait être implémenté dans ma procédure après le début mais je ne sais pas pourquoi il renvoie une erreur PLS-00103 ora, ai-je raté quelque chose? –