Le but est de mémoriser des fichiers en BD dans un champ de type BLOB sous Oracle 10g
Pour cela on passe par la procédure stockée suivante :
et le code delphi est des plus simple (composant ODAC):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 create or replace PROCEDURE AJOUT_PJ (pID_PJ IN INTEGER, pPJ IN BLOB DEFAULT NULL) IS BEGIN BEGIN INSERT INTO TABLE_PJ ID_PJ, PJ ) VALUES ( pID_PJ, pPJ ); EXCEPTION when OTHERS then raise_application_error(-20294, '{8}-Erreur lors de l''ajout d''une PJ de la documentation commerciale n° ['||pID_PJ||'] ' ||SQLERRM); END; END;
Pour des fichiers < 32k, cela fonctionne correctement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 begin if OpenDialog1.Execute = true then begin OraStoredProc1.Params.Clear; OraStoredProc1.StoredProcName := 'AJOUT_PJ'; OraStoredProc1.Params.CreateParam(ftInteger,'pID_PJ',ptinput); OraStoredProc1.Params.CreateParam(ftBlob,'pPJ',ptinput); OraStoredProc1.ParamByName('pID_PJ').AsInteger := pID_PJ; OraStoredProc1.ParamByName('pPJ').LoadFromFile(OpenDialog1.FileName, ftBlob); try OraStoredProc1.ExecProc; except on E : Exception do ShowMessage(e.Message); end; end;
pour des fichiers > 32k j'ai le message d'erreur suivant :
ORA-01460: unimplemented or unreasonable conversion requested
merci pour toute réponse de solution pour éviter cette erreur
Partager