1
Ich möchte Bild aus dem Verzeichnis in Datenbank Blob-Feld hochladen. Aus diesem Grund schreibe ich diesen Code. Code allein funktioniert gut, funktioniert aber nicht als Prozedur. Was ist das Problem? Ich kann nicht verstehen. Hier ist der Code:Update-Anweisung funktioniert im normalen Modus, aber nicht in der Prozedur
DECLARE
dest_loc BLOB;
src_loc BFILE;
BEGIN
src_loc:= BFILENAME('ALL_IMG_DIR','SDFGASDF1544.jpg');
DBMS_LOB.FILEOPEN(src_loc);
DBMS_LOB.CREATETEMPORARY(dest_loc,true);
DBMS_LOB.LOADFROMFILE(dest_lob => dest_loc, src_lob => src_loc,amount=>dbms_lob.getlength(src_loc));
UPDATE STUDENT
SET IMAGE=dest_loc
WHERE
REG_CODE = 'SDFGASDF1544';
DBMS_LOB.CLOSE(src_loc);
end;
Aber wenn ich schreibe diesen Code als ein Verfahren, wie
CREATE OR REPLACE PROCEDURE img_to_blob_student(Vreg_code varchar2)
is
dest_loc BLOB;
src_loc BFILE;
BEGIN
src_loc := BFILENAME('ALL_IMG_DIR','SDFGASDF1544.jpg');
DBMS_LOB.FILEOPEN(src_loc);
DBMS_LOB.CREATETEMPORARY(dest_loc,true);
DBMS_LOB.LOADFROMFILE(
dest_lob => dest_loc,
src_lob => src_loc,
amount=>dbms_lob.getlength(src_loc)
);
UPDATE STUDENT
SET IMAGE=dest_loc
WHERE REG_CODE = 'SDFGASDF1544';
DBMS_LOB.CLOSE(src_loc);
end;
Und nennen wie
img_to_blob_student('123');
I
ERROR IS: `ORA-00900: invalid SQL statement in procedure`
Danke ich habe versucht und du hast Recht. – Arif
Eine Frage Herr, kann ich Tabellenname und Spaltenname dynamisch verwenden? – Arif
Hallo Arif, natürlich können Sie, aber es wird erfordern Sie ein wenig mehr in Oracle 'ALL TABLES' und die' EXECUTE IMMEDIATE * Ihre konstruierte Anweisung * 'zu graben. Dies sollte ausführlich erklärt werden, wie hier in StackOverflow ... z. [hier] (http://stackoverflow.com/questions/1241611/oracle-batching-ddl-statements-within-a-execute-immediate) –